繁体   English   中英

Rails API后端中没有“ Access-Control-Allow-Origin”标头

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

我在Rails中有一个jsonapi-resources后端api。 我可以使用curl和Python来请求数据。

当我尝试使用jQuery进行请求时,在浏览器中出现以下错误:

XMLHttpRequest无法加载https://shop-api-3.herokuapp.com/customers?filter%5Bshop_token%5D=9e3c9769b752436ddbd27597cf946a36 对预检请求的响应未通过访问控制检查:请求的资源上不存在“ Access-Control-Allow-Origin”标头。 因此,不允许访问原始“空”。 响应的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'
    }

但是,我仍然遇到相同的错误。 我想念什么?

FWIW,这是我的curl命令:

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

5D = ABC123“

使用Rails 4

一个月前我也遇到过同样的问题,在阅读了许多博客文章后,我通过...解决了这个问题

因此,似乎您是在使用jquery(从浏览器)在另一台服务器上请求api令牌,而不是这样做,从您的服务器上请求它,然后将其传递给客户端,然后您就可以做任何您想做的事情,这应该可以解决问题。

我对CORS的理解是,您无法将浏览器执行到服务器,而必须从服务器(您的域)到服务器(您正在访问的api)执行。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM