Rails capybara功能规范否'Access-Control-Allow-Origin'

时间:2015-05-12 04:18:31

标签: ruby-on-rails rspec capybara capybara-webkit

我有一个功能规范,作为页面加载的一部分。 我点击了一个本地网址来获取更多数据。

即。使用http://fullcalendar.io/ 它通过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_filter只是为了查看,但仍然遇到同样的问题。

注意:我使用的是capybara-webkit

1 个答案:

答案 0 :(得分:0)

设置这些内容的最佳方式是在您的测试环境中,因为您不希望在生产中打开原点。

<强> test.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'
  })

至于您的问题,我怀疑您在“save_and_open_page&#39;之后收到此错误在这种情况下,它只是一个基于你的capybara asset_path的渲染错误,而不是你的测试用例的实际问题。