【问题标题】:Should the CORS preflight OPTIONS request return 200 OK?CORS preflight OPTIONS 请求是否应该返回 200 OK?
【发布时间】:2012-12-22 23:29:47
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,果然它们在网络面板中。谢谢!我现在感觉更聪明了(不幸的是,这意味着这不是我的问题的原因......很快就会有更多关于这些标签的问题!)。
    猜你喜欢
    • 2018-07-03
    • 2017-10-20
    • 2014-04-25
    • 2012-12-31
    • 2013-01-20
    • 2019-01-05
    • 2021-02-22
    • 2017-07-16
    • 2020-05-06
    相关资源
    最近更新 更多