Rails InvalidCrossOriginRequest

时间:2015-03-27 21:04:41

标签: ruby-on-rails ajax request

我的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.

关于如何阻止这种情况的任何想法?

1 个答案:

答案 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请求   否则被同源政策禁止。

http://en.wikipedia.org/wiki/Same-origin_policy