私はActionController :: InvalidAuthenticityTokenは単純なリソースを節約取得しています。..Railsの5 InvalidAuthenticityTokenが、トークンが存在する
CSRFのメタタグが存在している:
<meta name="csrf-token" content="Z4fDRsIqCp4cvpCw1Dp6kN7z0uPNF5otp611C80YhUg/oB+AcUy+dz2b5qKyoMMo48LdEvbF3dcBn2d0GqeR+g==" />
、フォームのトークン・フィールド:
<input type="hidden" name="authenticity_token" value="bIMZ5cndd/CTgOwjC3quOp02WlvWdDmhdNQCyKb920HIZz2Y8vvNDlTa7d4PKaJ5pUY6QkHKYCqiHikc2rFsyQ==" />
セッションIDはリクエスト間で維持されませんが、この動作はCSRFエラーが発生した場合のものであることを理解しています。
フォームのコード:コントローラの関連する
<%= form_for document do |f| %>
<% if document.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(document.errors.count, "error") %> prohibited this document from being saved:</h2>
<ul>
<% document.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
アクション:
def new
@document = Document.new
end
def create
@document = Document.new(document_params)
respond_to do |format|
if @document.save
format.html { redirect_to @document, notice: 'Document was successfully created.' }
format.json { render :show, status: :created, location: @document }
else
format.html { render :new }
format.json { render json: @document.errors, status: :unprocessable_entity }
end
end
end
も、このトラブルシューティングを行う、と明白な理由のために、私はCSRFの電源を切ることを望んでいないよする方法がわかりません保護。
編集:私はプロキシとしてnginxのコンテナを経由していますが、おそらく私の設定が間違っていますか?ここではその設定は次のとおりです。
upstream backend {
server service:3000;
}
server {
listen 80 default_server;
error_page 500 502 503 504 /500.html;
error_log /dev/stdout info;
access_log /dev/stdout;
location/{
proxy_pass http://backend;
}
}
あなたはdeviseを使用していますか? – Gerry
いいえ、追加の宝石をまだ追加していません – user1456632
私の質問を潜在的に関連性のある情報で更新しました – user1456632