没有& # 39;Access-Control-Allow-Origin& # 39;header存在于Rails AP

No 'Access-Control-Allow-Origin' header is present in Rails API backend

本文关键字:Rails AP Access-Control-Allow-Origin 没有 header 存在      更新时间:2023-09-26

我在Rails中有一个jsonapi-resources后端api。我能够使用curl以及Python请求数据。

当我尝试使用jQuery请求时,我在浏览器中得到以下错误:

XMLHttpRequest无法加载- 3. - herokuapp.com/customers?filter%5bshop_token%5d=9e3c9769b752436ddbd27597cf946a36 https://shop api。预起飞请求响应未通过访问控制检查:否"访问-控制-允许-起源"标头出现在请求上资源。因此,不允许访问原点'null'。响应HTTP状态码为404。

所以我把这个添加到config/environments/production.rb:

  config.action_dispatch.default_headers = {
      'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Authorization',
      'Access-Control-Allow-Origin' => '*',
      'Access-Control-Request-Method' => '*',
      'X-Frame-Options' => 'ALLOWALL'
    }

然而,我仍然得到相同的错误。我错过了什么?

这是我的curl命令:
curl -i -H "Accept: application/vnd.api+json" "https://app.herokuapp.com/retentions?filter%5Bshop_token%

5 d = ABC123"

Using Rails 4

一个月前我也遇到过同样的问题,在阅读了很多博客文章之后,我通过…

所以看起来你正在请求一个api令牌,在另一个服务器上使用jquery(从浏览器)而不是这样做,从你的服务器请求它,然后你得到它传递给客户端,然后你可以做任何你想要的,这应该做的技巧。

我对这个CORS的理解是你不能从浏览器到服务器,你必须从服务器(你的域名)到服务器(你正在访问的api)。

希望这对你有帮助!