gpt4 book ai didi

ruby-on-rails - Rails CORS - 简单请求 : allowed methods option is ignored

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:39 25 4
gpt4 key购买 nike

我基于 Rails 5 构建 API。我使用“rack-cors”gem 来控制 CORS。下面的代码片段我想知道:

    config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: %i()
end
end

我从允许的方法数组中删除了所有 HTTP 方法,但我仍然可以成功调用 GET、POST(禁止删除,我明白了)。如我所见,OPTIONS、GET、POST 被忽略,因为即使它是空的,我也可以使用这些方法调用服务器。正常吗?如果是这样,如何禁止例如使用 CORS 发布?

最佳答案

methods 值仅控制服务器在 Access-Control-Allow-Methods 的值中发回的方法名称。标题响应 CORS preflight OPTIONS request — 也就是说,仅针对非“简单”请求。

因此,如果您的请求具有触发预检的特征,那么浏览器才会检查 Access-Control-Allow-Methods 响应 header 的值以查看是否允许请求方法,等等只有这样,您配置的 methods 值才会生效。

否则,您的浏览器将允许任何不触发预检的跨域 GETPOST — 任何“简单”请求 — 无论 方法您配置的值。

how to forbid e.g. POST using CORS?

您不能禁止使用 CORS 的“简单”POST 请求。您只能禁止非简单的 POST 请求——那些出于某种原因触发了预检的请求。

或者,通过使用 headers 选项,您可以设置 Access-Control-Allow-Headers header 值——这将导致浏览器禁止任何非简单的预检请求,这些请求的请求 header 名称不是您使用 headers 选项指定的 header 名称。

关于ruby-on-rails - Rails CORS - 简单请求 : allowed methods option is ignored,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46932909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com