【发布时间】:2014-03-02 07:09:55
【问题描述】:
我正在使用rack-cors 在我们的 API 请求中添加 CORS 响应标头。
请求成功时(200)它工作正常。但是,当应用程序通过 authenticate_user! (401) 引发异常 ActiveRecord::RecordNotFound (404) 或 devise/invalid credentials 时 - 它不会使用 CORS 响应标头进行响应。
它不仅适用于机架。它不会响应在引发异常之前添加的任何自定义标头。
最大的问题在于客户端(浏览器),因为它没有根据状态码显示正确的错误,而是显示:
XMLHttpRequest 无法加载 http://development.com:4000/orders/1。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://development.com:3000' 因此不允许访问。
如果我手动捕获异常 rescue_from 和 render json: {}, status: 500,它会以标题响应。
【问题讨论】:
-
你需要启用
CORS看这个问题stackoverflow.com/questions/17858178/… -
@BrianWheeler 它由 rack-cors 启用。
标签: ruby-on-rails cors