2016-10-04 20 views
1

フェニックスに働くアヤックスを取得しようとしています。私は、次の操作を行って、CSRFトークンを取得するので、私はそれを持っている:フェニックスのCSRFトークンが一致しません

<input type="hidden" id="_csrf_token" name="_csrf_token" value="<%= get_csrf_token() %>"> 

そして、そのようにそれを使用します。

$.ajax({ 
    type: "POST", 
    url: "<%= lesson_path @conn, :create %>", 
    beforeSend: function(xhr) 
    { 
    token = $('#_csrf_token').val(); 
    xhr.setRequestHeader('_csrf_token', token); 
    }, 
    data: data, 
    success: function(data, textStatus, jqXHR) { 
    alert(textStatus); 
    } 
}); 

問題は、私が手トークンが正しいトークンではないということです。 google chrome inspectorを見ると、無効なcsrfトークンがあるという要求に対して403が表示されます。有効なセッショントークンは、常に私に与えられたトークンとは異なります。このようなものを入手してくださいIiJndz5FeV9MMhIKMzggUTtmHUALAAAAkJ/6Yr/k4BxdiKmiaMUqsw==これは通常このようなものを望んでいますhHAg7V4xpjnZsM8Z+H1xw==

私はそれが望んでいるものとは異なるトークンを手に入れていますか?

私は同様に、以下を試してみました:

Plug.Conn.get_session(conn, :csrf_token) 
Map.get(conn.req_cookies, "_csrf_token") 

どちらも結果を返されて何もして。

答えて

2

トークンは、キー "_csrf_token"を持つパラメータまたは "x-csrf-token"という名前のヘッダーを介して要求によって送信されます。

キーを使用してヘッダーを設定してみてください。

x-csrf-token 
+0

はちょうどこので遊んでたと、それはそれでした。ありがとう!!! –

+0

助けてくれてうれしいです。 – TheAnh

関連する問題