我的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.
。
关于如何阻止这种情况的任何想法?
答案 0 :(得分:20)
将此添加到呈现页面片段的控制器
class FooController < ApplicationController
protect_from_forgery except: :index
index
是您希望跳过此保护的操作的名称
您获得的错误是因为所谓的跨源策略。它是每个浏览器中存在的标准,它不允许页面从其他域运行脚本。解决这个问题的方法是在http请求中添加一个标头,允许您的内容在其他域中运行。
维基百科对此有一个解释:
放宽同源政策的第二种方法是 以跨源资源共享的名义标准化。这个 标准使用新的Origin请求标头和新的扩展HTTP Access-Control-Allow-Origin响应头。它允许服务器使用 标题,用于明确列出可能请求文件或使用的起源 通配符,允许任何站点请求文件。浏览器等 作为Firefox 3.5,Safari 4和Internet Explorer 10使用此标头 允许使用XMLHttpRequest的跨源HTTP请求 否则被同源政策禁止。