Railsアプリのページにremote: true
リンクがあります。このアプリは同じページの.js
バージョンを呼び出し、スクリプトを実行してページのコンテンツを適切に更新します。 。
正常に動作していましたが、昨日から、これらのリンクの1つをクリックするたびに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.
が表示されます。
これを止める方法について何かアイデアはありますか?
これを、ページフラグメントをレンダリングしているコントローラーに追加します
class FooController < ApplicationController
protect_from_forgery except: :index
ここで、index
は、この保護をスキップするアクションの名前です。
発生したエラーは、いわゆるクロスオリジンポリシーが原因です。これは、ページが他のドメインからスクリプトを実行することを許可しない、すべてのブラウザに存在する標準です。これを回避する方法は、httpリクエストにヘッダーを追加して、コンテンツを他のドメインで実行できるようにすることです。
ウィキペディアにはこれについての説明があります:
同一生成元ポリシーを緩和するための2番目の手法は、クロスオリジンリソースシェアリングという名前で標準化されています。この標準は、新しいOrigin要求ヘッダーと新しいAccess-Control-Allow-Origin応答ヘッダーでHTTPを拡張します。これにより、サーバーはヘッダーを使用して、ファイルを要求する可能性のあるオリジンを明示的に一覧表示したり、ワイルドカードを使用してファイルを任意のサイトから要求できるようにしたりできます。 Firefox 3.5、Safari 4、Internet Explorer 10などのブラウザーは、このヘッダーを使用して、同一生成元ポリシーによって禁止されていたXMLHttpRequestを使用したクロスオリジンHTTP要求を許可します。