作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用第三方 JavaScript 客户端库,该库使用 jQuery 发送 JSONP 请求。这些请求被标记为 X-CSRF-Token,但谷歌浏览器阻止了它们,说
XMLHttpRequest 无法加载 [...]。 Access-Control-Allow-Headers 不允许请求 header 字段 X-CSRF-Token。
如何让 Rails 3.1 不将 X-CSRF-Token 添加到我发送给第三方的请求中?
最佳答案
我刚遇到这个问题。这个bug实际上在jquery-rails的当前开发版本中已经修复。
那里发生的事情是由于CSRFProtect function rails helpers 的一部分,它会将该 header 添加到每个 ajax 请求中,但它对跨域没有意义。从 jQuery 1.5 开始,您可以在 ajax 配置中添加一个 crossDomain
选项来强制将请求视为跨域,而当前版本的 jquery-rails 修复了这个问题 here .
现在,有两种方法可以设置 crossDomain 选项:
:html => {'data-cross-domain' => true}
或 'data-跨域' => true
(cf. the source )$.ajax
函数,请记住将 crossDomain: true
添加到选项中。TL;DR 升级到 jquery_rails 的最新版本(即 github 中的当前开发版本)并记住 crossDomain 选项。
关于javascript - 如何让 Rails 3.1 不将 X-CSRF-Token 添加到我发送给第三方的 JSONP 请求中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049626/
我是一名优秀的程序员,十分优秀!