2

我正在使用 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 preflight OPTIONS 请求中得到什么样的响应?

4

1 回答 1

5

CORS OPTIONS 响应应该返回 200 个,以及与它们一起的各种Access-Control-*标题。

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

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

于 2013-01-09T00:27:42.623 回答