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

Zig*_*ggy 2 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请求中得到什么样的响应?

wle*_*ss1 5

CORS OPTIONS响应应该返回200秒,以及它们,各种Access-Control-*标题.

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

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