AngularJS on Rails 中的 CORS 问题

Posted

技术标签:

【中文标题】AngularJS on Rails 中的 CORS 问题【英文标题】:CORS issue in AngularJS on Rails 【发布时间】:2015-11-02 19:54:47 【问题描述】:

我的应用是用 AngularJS on Rails 编写的。我尝试使用 Angular 方式或 Rails 方式来解决 CORS 问题。 “POST”方法还是不行,“GET”方法没问题。

我已经将此代码放入我的应用程序中。

myapp.config(['$httpProvider', function($httpProvider) 
   $httpProvider.defaults.useXDomain = true;
   delete $httpProvider.defaults.headers.common['X-Requested-With']; 
])

和 Rails 应用程序控制器 我也提出来了。

after_filter  :set_access_control_headers

def set_access_control_headers
  headers['Access-Control-Allow-Origin'] = '*'
end   

我还尝试了 gem 'rack-cors', :require => 'rack/cors'。

提前感谢您的帮助。

【问题讨论】:

CORS 不仅仅是一个标题 【参考方案1】:

要了解有关 CORS 的更多信息,我强烈推荐article。

那么,由于您使用的是 Rails,您可以按照rack-cors 的说明进行操作:

config/application.rb

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

还请务必检查此示例 Rails 4 配置:https://github.com/cyu/rack-cors/blob/master/examples/rails4/config/application.rb

【讨论】:

以上是关于AngularJS on Rails 中的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章

Googlebot 在 Rails 4.1 上导致无效的跨域请求 (COR)

rails-api 和 angularJs 中的 CORS

如何将AngularJS $资源中的params序列化为rails 3.2兼容的参数

将Ckeditor值绑定到angularjs和rails中的模型文本

Angularjs中的事件广播-浅谈$broadcast,$emit,$on

什么相当于 rails 7 中的 `Rails.config.action_view.raise_on_missing_translations`?