CORS问题:获取错误"No'Access-Control-Allow-Origin'标题存在"实际存在时

 临临临峰_547 发布于 2023-02-08 17:25

我怀疑为我的应用程序提供服务的后端非常重要,但是如果你关心,我会使用带有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"标头.因此不允许来源' http://sending-app.localhost:3000 '访问.

我尝试过切换PATCHPUT相同的结果.

这对我没有任何意义.这是怎么回事?

更新:我的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

brandonhilke.. 7

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

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

您可以通过将其添加到控制器来跳过检查操作:

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

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

1 个回答
  • 在操作中排除Rails CSRF检查;)

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

    您可以通过将其添加到控制器来跳过检查操作:

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

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

    2023-02-08 17:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有