我在Rails应用程序的一个页面上有一个remote: true
链接,它调用同一页面的.js
版本,然后运行一个脚本来更新页面内容。
它工作得很好,但从昨天开始,我现在每次点击其中一个链接都会得到Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.
。
有什么办法能阻止这一切吗?
2条答案
按热度按时间bt1cpqcv1#
您可以跳过“跨源”检查,而不是跳过所有防伪/真实性令牌验证。
您需要跳过这一步的原因是Rails的
verify_same_origin_request
实际上并不检查来源,而是检查(1)它是一个GET请求,(2)它不是一个XHR请求,您的用例同时满足这两个条件,因此会引发一个错误。ccrfmcuu2#
将其添加到呈现页面片段的控制器中
其中
index
是要跳过此保护的操作的名称跨源策略
你得到的错误是因为所谓的跨源策略。这是一个标准存在于每一个浏览器,不允许一个网页运行来自其他域的脚本。解决这个问题的方法是添加一个头部到http请求允许您的内容在其他域运行。
维基百科对此有一个解释:
放宽同源策略的第二种技术是标准化的,名为跨源资源共享。该标准使用新的源请求报头和新的访问控制允许源响应报头扩展HTTP。它允许服务器使用报头来明确列出可能请求文件的源,或者使用通配符来允许任何站点请求文件。浏览器如Firefox 3.5、Safari 4和Internet Explorer 10使用此标头来允许具有XMLHttpRequest的跨源HTTP请求,否则同源策略将禁止这些请求。
http://en.wikipedia.org/wiki/Same-origin_policy