升级Rails 4到Rails 5的CORS问题

时间:2017-09-27 15:47:20

标签: ruby-on-rails cors ruby-on-rails-5 rack-cors

我正在将Rails应用程序从Rails 4.1.1升级到Rails 5.1.4。 我有2个应用程序,一个是Web应用程序(用于angular),另一个是API应用程序。

我正在做什么,我正在从Web app(Rails with Angular)发送请求并从API app获取数据。但是当我从Web app发送请求时出现以下错误:

  

无法加载http://api.myapp:3001/user:对预检的响应   请求不通过访问控制检查:的值   响应中的“Access-Control-Allow-Origin”标头不能是   当请求的凭据模式为“include”时,为通配符'*'。起源   因此,“http://myapp:3000”不允许访问。凭证   XMLHttpRequest发起的请求模式由   withCredentials属性。

http://myapp:3000' -> Web application and request sending to API

http://api.myapp:3001/user -> API application to send response

问题google之后,我发现了一个名为rack-cors的宝石。 在Web和API这两个应用程序中,我添加了

config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', :headers => :any, :methods => [:get, :post, :options]
  end
end

但仍然遇到了问题。请告诉我。

1 个答案:

答案 0 :(得分:0)

好消息:

  

当请求的凭据模式为“include”时,响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”

似乎您正在从Angular应用程序发送凭据信息,并且该域未列入白名单。您可以尝试进行测试,将withCredentials设置为false,或允许域。

这可以帮助您:http://50linesofco.de/post/2017-03-06-cors-a-guided-tour