Ruby on rails Rails capybara功能规格编号';访问控制允许原点';

Ruby on rails Rails capybara功能规格编号';访问控制允许原点';,ruby-on-rails,rspec,capybara,capybara-webkit,Ruby On Rails,Rspec,Capybara,Capybara Webkit,我有一个特性规范,作为页面加载的一部分。 我点击本地url以获取更多数据 i、 e.使用 它通过ajax加载它的事件 events: { url: 'calendar_events.json', type: 'GET', error: function(response) { ... }}, 我越来越 XMLHttpRequest cannot load htt

我有一个特性规范,作为页面加载的一部分。 我点击本地url以获取更多数据

i、 e.使用 它通过ajax加载它的事件

   events: {
             url: 'calendar_events.json',
             type: 'GET',
             error: function(response) {
             ...
            }},
我越来越

XMLHttpRequest cannot load http://localhost:3000/calendar_events.json?start=2014-01-20&end=2014-01-27. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 404.
不确定如何解决。我试着加上

    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, OPTIONS'
    response.headers['Access-Control-Request-Method'] = '*'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
到我的应用程序控制器上的before_过滤器只是为了查看,但仍然会遇到相同的问题


注意:我正在使用capybara webkit

设置这些的最佳方法是在您的测试环境中,因为您不想在生产中打开来源

测试.rb

  config.action_dispatch.default_headers.merge!(
  {
      'Access-Control-Allow-Origin' => '*',
      'Access-Control-Allow-Methods' => 'POST, PUT, DELETE, GET, OPTIONS',
      'Access-Control-Max-Age' => "1728000",
     'Access-Control-Allow-Headers' =>'Origin, X-Requested-With, Content-Type, Accept, Authorization'
  })

至于您的问题,我怀疑您是在“保存和打开页面”之后出现此错误的,在这种情况下,这只是基于您的capybara资产路径的呈现错误,而不是测试用例的实际问题。

您可以检查一下,也许这就是请求的问题所在。我真的不想将其更改为JSONP,因为跨域触发器就足够了。我不知道你为什么点击本地url,你能不能马上在服务器端呈现它?你知道为Rails 3设置默认头的方法吗?对于单个请求,它的行是:“获取所需的路径,参数散列,{‘访问控制允许原点’=>“*”}.我怀疑设置默认值对您不起作用,如上所述?是的,默认标题仅适用于Rails 4。