我有一个rails应用程序,其中cors设置在before_filter:
def cors
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Headers'] = 'X-AUTH-TOKEN, X-API-VERSION, X-Requested-With, Content-Type, Accept, Origin'
headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE, OPTIONS'
headers['Access-Control-Max-Age'] = "1728000"
end
before_filter :cors
这很好用。然后,如果路由上抛出错误,则会覆盖标头。
def index
object.undefined_method() // undefined method `undefined_method'
end
回复标题:
Keep-Alive
Content-Length →16399
Content-Type →text/html; charset=utf-8
Date →Thu, 08 May 2014 18:51:20 GMT
Server →WEBrick/1.3.1 (Ruby/2.0.0/2013-11-22)
X-Request-Id →6ace3d4e-4367-452c-a924-c4c490f207de
X-Runtime →0.130761
即使before_filter运行,那些标题也不存在。虽然不应该存在500错误,但我希望前端开发人员能够给我一个比“我这样做并且CORS不起作用”更具描述性的错误。我希望CORS能够出现在结果中。
感谢。
答案 0 :(得分:1)
默认情况下,Rails使用Rack Middleware来处理错误。此中间件totally skips来自请求的任何标头。可能的解决方案 - 使用您自己的错误页面处理程序,描述了许多好的想法here