技術

【Rails】ActionController::InvalidAuthenticityToken (ELB,EC2)

投稿日:

どうも中田です。

また出ました。赤い画面。
日々いろんなサイトを見てますが、この画面を一番見てるんじゃないかって。
いっそのこと、このデザインで画面作ったら面白そうですね。
railsエンジニアは拒否反応を持ちつつサイトに訪れていただけることでしょう。

本題

さて、Railsの本番環境でこんなエラーが出ましたー。
ということでその解決策のお話。

今回のエラーは下記内容でした

HTTP Origin header (https://www.xxx.jp) didn't match request.base_url (http://www.xxx.jp)

プロトコルが違っちゃってますね
スキーマ違いでクロスサイトと判別されてるんすね
ちなみに、本番環境はAWSを使っていて

[ELB] -> [EC2(nginx -> rails)] -> [RDS]

って感じになってます。

ELBがSSL終端にしてるので、nginxにはHTTPでしか来ません。
なので…

解決方法

nginxの設定追加しました

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #これ追加
    proxy_set_header X-Forwarded-Proto https; #これ追加
    proxy_pass http://www.xxxx.com;
  }

多分、X-Forwarded-Protoの追加だけでいいけど、クライアントIPもわかった方がいいだろうって感じで X-Forwarded-For も入れてます。

-技術

執筆者:


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

関連記事

[XCode] clang: error: linker command failed with exit code 1

どうも中田です 本日はシンプルに。 XCodeでbuild時に発生しました。 エ …

no image

heroku + node.jsでError R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

こんにちは heroku + node.jsでアプリを作っていて、いざherok …

Ionicアプリのアイコンやスプラッシュ画像を変更したい!

こんにちは。田中です。 現在Ionicを使ったアプリ開発に携わっているのですが、 …

[Angular6] Angularのユニットテストでprivate変数を読み込む

Angularでテストコードを書いている時、component側で定義しているp …

「Google Inside Music」で自分の好きな音楽を聞いてみる(local環境構築 編)

以前紹介した「Google Inside Music」。 「Google Ins …