一旦有跨域请求,fetchApi 首先会发送一个 OPTION请求,但是在 rails 里面怎么处理这个请求呢?
OPTION
CardDetail.vue?950b:100 OPTIONS http://localhost:3000/api/v1/cards/311 404 (Not Found)
解决了, 写一个你需要被跨域访问时的OPTIONS路由
OPTIONS
routes.rb
match '/api/v1/cards/:id', :controller => 'option_configs', :action => 'options', :via => :options
option_configs_controller.rb
class OptionConfigsController < ApplicationController def options headers['Access-Control-Allow-Origin'] = "*" headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PUT' headers['Access-Control-Allow-Headers'] = 'Content-Type' head :ok end end
这不是解决,这是欺骗浏览器,会产生漏洞…
webpack 开个 proxy 转发。
那那个OPTIONS请求是做什么用的
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
是 CORS 的规范,如果两个服务都是自己的还是做成 nginx 代理更方便
改下 /etc/hosts 文件
/etc/hosts
这种 127.0.0.1 dev.your-domain.com
再用 nginx 代理下。