CORS预检OPTIONS请求是否应该返回200 OK?

时间:2013-01-09 00:20:17

标签: ruby-on-rails cross-domain cors

我正在使用rack-cors中间件从一个站点向我的rails应用程序发出跨域请求(尽管我不认为这个问题特定于rack-cors)。当我用firebug检查控制台输出时,我注意到只有一个请求发出,POST请求。 OPTIONS请求是秘密进行的吗?

同样,当我检查我的服务器日志时,我看到了

Started OPTIONS "/australia_post_api_connections" for 127.0.0.1 at 2013-01-08 16:06:18 -0800

但没有相应的

Completed 200 OK in 1441ms (Views: 85.2ms | ActiveRecord: 0.0ms)

这是正常的,还是意味着OPTIONS请求没有运行完成?我应该从CORS预检OPTIONS请求中获得什么样的响应?

1 个答案:

答案 0 :(得分:5)

CORS OPTIONS响应应返回200秒,以及各种Access-Control-*标题。

我的猜测是你在rails日志中没有看到它作为“Completed 200”,因为在Rails框架中发生日志记录之前,它正在Rack中间件中发生。

您可以在Firebug / Chrome的开发人员工具网络面板中查看请求/响应标头,以验证一切正常进行。我不相信Firebug会隐藏OPTIONS请求,但如果返回Access-Control-Max-Age,则可能会缓存OPTIONS请求的结果。