Ruby on rails Rails capybara功能规格编号';访问控制允许原点';
我有一个特性规范,作为页面加载的一部分。 我点击本地url以获取更多数据 i、 e.使用 它通过ajax加载它的事件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
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。