Pab*_*ero 3 ruby-on-rails cors
我正在使用rack-cors在我们的API请求中添加CORS响应头.
当请求成功时它工作正常(200).但是当应用程序通过(401)引发异常ActiveRecord::RecordNotFound(404)或设计 /无效凭证时authenticate_user!- 它不会响应CORS响应头.
它不仅适用于机架式.在引发异常之前,它不会响应添加的任何自定义标头.
最大的问题是在客户端(浏览器),因为它不是根据状态代码显示正确的错误,而是显示:
XMLHttpRequest无法加载http://development.com:4000/orders/1.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://development.com:3000 "访问.
如果我手动捕获异常rescue_from,render json: {}, status: 500它会响应标题.
我长期与这个问题作斗争,答案是:
您设置Rack :: Cors中间件的顺序很重要.像这样使用它:
config.middleware.insert_after Rails::Rack::Logger, Rack::Cors, :logger => Rails.logger do
allow do
origins '*'
resource '*', headers: :any, methods: %i[get post patch put delete options]
end
end
Run Code Online (Sandbox Code Playgroud)
更多信息:https://github.com/cyu/rack-cors/issues/33
| 归档时间: |
|
| 查看次数: |
897 次 |
| 最近记录: |