【发布时间】:2014-01-10 13:06:45
【问题描述】:
我怀疑为我的应用程序提供服务的后端是否重要,但如果你关心的话,我将 rack-cors 与 Rails 4.0 应用程序一起使用。
使用 jQuery,我向我的应用发送 PATCH 请求,如下所示:
$.ajax({
url: "http://example.com/whatever",
type: "PATCH",
data: { something: "something else" }
})
当我从 Chrome 触发此调用时,我看到一个成功的 OPTIONS 请求发出,它从我的服务器返回这些标头:
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 无法加载 http://example.com/whatever。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'http://sending-app.localhost:3000'。
我尝试从PATCH 切换到PUT,结果相同。
这对我来说没有任何意义。怎么回事?
更新:我的 config/application.rb
我以为标题说明了整个故事,但由于人们感到困惑,这是我的 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
【问题讨论】:
-
你的
application.rb是什么样的? -
@RichPeck 我已经添加了我的
application.rb,这是值得的。
标签: javascript jquery ruby-on-rails http cors