読者です 読者をやめる 読者になる 読者になる

@テク野路ジーロード

配信タグシェアリングシステムpickvyを開発、運営開始。最近は、Googleアナリティクスを研究中

railsアプリの呼び出しでdoes not permit cross-origin framingエラーが出た件

本記事は備忘録。解決策を記載しておきます。
これ忘れた頃にやってくる、やっかいなエラー。ハマる。何時間も何日も無駄にする。
もう嫌。

さて、別ドメインからRailsアプリを呼び出す仕様の場合、
ドメインから呼び出したときに以下のエラーが出る場合がある。

  • iframe does not permit cross-origin framing. 

原因は、クライアント側で開いているブラウザが拒否しているからではない。
(この認識を間違うと、えらい遠回りしてしまう!)

Railsアプリが拒否しているのである。
そして、それ受けて、クライアント側のブラウザがエラー表示しているのである。

だから、解決策としては、Railsの設定を変更して、別ドメインからのアクセスを許可してあげるとうことになる。

単純な解決策としては、config/environments/production.rb (別にenvironment.rbでも良し)に以下を追記してあげる。

  • config.action_dispatch.default_headers.delete('X-Frame-Options')

同一生成元ポリシー - Wikipedia を疑って、一生懸命、クライアント側で動作するjavascriptをいじっても解決しない。

(いやまぁ、これが根源の原因なんですけど、それをiframeで回避したのにさらにこれが出るのは、Railsの設定の問題ということで。)

参考記事

Rails4アプリがiframeで表示されない | 黒川仁の文具堂ブログ三昧
Ruby on rails 4 app does not work in iframe - Stack Overflow