2016-01-07 9 views
5

Rails 5(beta1)で本当に奇妙な問題があり、フォームを安全に送信できません。Nginxの背後にある、Rails 5のInvalidAuthenticityTokenをSSLを使用して

RailsはSSLを復号するNginx(Ubuntu 12.04上の1.4.6)リバースプロキシの後ろでプロダクションモードで動作しているとき、正しいトークンがフォームによって送信されているにもかかわらず、私のCSRFトークンを拒否しています。

NginxでSSLを無効にすると、すべてうまく動作します。

ご協力いただければ幸いです。

答えて

10

Nginx(X-Forwarded-Ssl on、X-Forwarded-Port 443およびX-Forwarded-Host <ホスト名>)にさらにヘッダーを追加することで修正されました。問題は実際にCSRFトークンがActionControllerによってチェックされる新しい方法です(request.base_urlと原点ヘッダーを比較)

+0

ありがとう!この問題は私を苦労させていました。 – dave

+2

私もこの問題を抱えていました。私のために修正した単一の行は 'proxy @ set_header X-Forwarded-Proto https;を' location @ puma'ブロックに追加しました – iamse7en

+0

[乗客文書からの設定](https://www.phusionpassenger.com/library)を使ってこれを修正しました/deploy/standalone/reverse_proxy.html#step-2-install-and-configure-span-class-nginx-nginx-span-span-class-hidden-or-span-span-class-apache-apache-span) – bjornmelgaard

関連する問題