我正在使用第三方JavaScript客户端库,它使用jQuery发送JSONP请求。这些请求上印有X-CSRF-Token,但Google Chrome正在阻止他们,说
XMLHttpRequest cannot load [...]. Request header field X-CSRF-Token is not allowed by Access-Control-Allow-Headers.
如何让Rails 3.1不将X-CSRF-Token添加到我转发给第三方的请求中?
答案 0 :(得分:2)
我刚遇到这个问题。这个bug实际上是在jquery-rails的当前开发版本中修复的。
由于CSRFProtect function的rails帮助程序发生了什么,它将该标头添加到每个ajax请求中,但它对跨域没有意义。从jQuery 1.5开始,您可以在ajax配置中添加crossDomain
选项以强制将请求视为跨域,并且当前版本的jquery-rails修复了here。
现在,有两种方法可以设置crossDomain选项:
:html => {'data-cross-domain' => true}
或'data-cross-domain' => true
(参见the source)$.ajax
功能,则只需记住将crossDomain: true
添加到选项中。TL; DR 升级到jquery_rails的最新版本(即github中的当前开发版本)并记住crossDomain选项。