2

Rails 3 と JavaScript を使用して POST リクエストを作成しているため、認証トークンが必要です。ただし、Rails が作成するトークンにはスペースが含まれているため、JavaScript の URL 文字列にそれを含めることはできません。現在のログでの様子は次のとおりです。

Started POST "/cart/update?authenticity_token=fjJJQc2gKBenzzAAqdvhprJxH2tnhYkyuZ9F+l+GFns=" for 127.0.0.1 at 2013-05-23 11:55:42 -0400
Processing by CartController#update as HTML
  Parameters: {"gift_card_amount"=>"undefined", "case_quantity"=>"", "bottle_quantity"=>"", "product_history_id"=>"1052981", "authenticity_token"=>"fjJJQc2gKBenzzAAqdvhprJxH2tnhYkyuZ9F l GFns="}
WARNING: Can't verify CSRF token authenticity

これは私のHTMLです:

    <a href="javascript: void(0)" class="button-yellow">Add to Cart</a>
    <%= hidden_field_tag form_authenticity_token %>
    <script>
        window._token = '<%= form_authenticity_token %>';
    </script>

そして私のJavaScript:

$.post('/cart/update?authenticity_token=' + encodeURIComponent(window._token), ...

を使用してみencodeURIComponentましたが、うまくいかないようです。ただし、問題は解決せず、javascript ではなく Rails に問題があるように感じます。Railsトークンにスペースを含めないように変更するにはどうすればよいですか? javascriptの+ようにgsub ?

4

1 に答える 1

1

csrf トークンをパラメーターとして送信するのではなく、ヘッダーで実際に送信する必要があるようです。また<%= csrf_meta_tag %>、レイアウトにあることを確認してください。この回答を確認してください。

于 2013-05-23T20:03:35.010 に答える