如果CORS预飞行选项请求返回200 OK



我正在使用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飞行前选择请求中得到什么样的回应?

CORS OPTIONS响应应该返回200s,并与它们一起,Access-Control-*标头的分类。

我的猜测是,你没有在你的rails日志中看到它作为"完成200",因为它发生在机架中间件在点之前,日志记录发生在rails框架。

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

最新更新