Rails InvalidCrossOriginRequest

У меня есть ссылка remote: true на странице моего приложения Rails, которая вызывает версию .js той же страницы, а затем запускает script для обновления содержимого страниц.

Он работал нормально, но со вчерашнего дня я получаю 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

Добавьте это в контроллер, который выполняет рендеринг фрагмента страницы

class FooController < ApplicationController
    protect_from_forgery except: :index

Где index - название действия, которое вы хотите пропустить эту защиту


Политика перекрестного происхождения

Ошибка, которую вы получали, связана с тем, что называется политикой Cross-Origin. Это стандарт, присутствующий в каждом браузере, который не позволяет странице запускать скрипты из других доменов. Способ обойти это - добавить заголовок к HTTP-запросу, позволяющий вашему контенту запускаться в других доменах.

В Википедии есть объяснение:

Второй метод ослабления политики одного и того же происхождения стандартизован под названием Cross-Origin Resource Sharing. Эта стандарт расширяет HTTP с новым заголовком запроса Origin и новым Access-Control-Allow-Origin. Он позволяет серверам использовать заголовок для явного списка истоков, которые могут запрашивать файл или использовать подстановочный знак и разрешить загрузку файла любым сайтом. Браузеры такие поскольку Firefox 3.5, Safari 4 и Internet Explorer 10 используют этот заголовок для разрешить HTTP-запросы с кросс-началом с XMLHttpRequest, которые в противном случае они были запрещены политикой того же происхождения.

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