gpt4 book ai didi

javascript - CORS 问题 : Getting error "No ' Access-Control-Allow-Origin' header is present"when it actually is

转载 作者:可可西里 更新时间:2023-11-01 02:40:25 24 4
gpt4 key购买 nike

我怀疑为我的应用程序提供服务的后端是否重要,但如果你关心的话,我正在使用 rack-cors使用 Rails 4.0 应用程序。

使用 jQuery,我向我的应用发送一个 PATCH 请求,如下所示:

$.ajax({
url: "http://example.com/whatever",
type: "PATCH",
data: { something: "something else" }
})

当我从 Chrome 触发此调用时,我看到一个成功的 OPTIONS 请求发出,它从我的服务器返回这些 header :

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:accept, content-type
Access-Control-Allow-Methods:GET, PUT, PATCH, OPTIONS
Access-Control-Allow-Origin: http://sending-app.localhost:3000
Access-Control-Expose-Headers:
Access-Control-Max-Age:15

然后我看到一个 PATCH 请求发出,它抛出了这个错误:

XMLHttpRequest cannot load http://example.com/whatever. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://sending-app.localhost:3000' is therefore not allowed access.

我尝试从 PATCH 切换到 PUT,结果相同。

这对我来说没有任何意义。怎么回事?

更新:我的config/application.rb

我认为 header 说明了整个故事,但由于人们感到困惑,这是我的 config/application.rb 文件,它是 Rails 的 rack-cors 插件的配置方式:

config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*',
:headers => :any,
:methods => [:get, :put, :patch, :options],
:max_age => 15
end
end

最佳答案

在操作中排除 Rails CSRF 检查;)

也就是说,Rails 使用更新/创建请求检查真实性 token 。在您的 Rails 应用程序中,此 token 将添加到您的所有表单中。但是对于 javascript 请求,包含它是很棘手的。

您可以通过将此添加到您的 Controller 来跳过检查它的操作:

skip_before_filter :verify_authenticity_token, :only => [:update]

顺便说一句,您的问题与 CORS 无关,您在浏览器中收到错误消息。 Rails 日志讲述了真实的故事。

关于javascript - CORS 问题 : Getting error "No ' Access-Control-Allow-Origin' header is present"when it actually is,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20724470/

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