2016-03-21 26 views
1

を送信すると、私はアンドロイドのアプリケーションから私のサーバーへのPOSTリクエストを送信していますが、私はこのエラーを取得しています:CSRF検証に失敗しました。リクエストが中止されました。私はPOSTリクエスト

enter image description here

POSTは、次のようになります。1000年は http://example/my_page_url/1000 ID。

は、これが私の見解方法である:

def inventory(request, cross_id): 

    text_file = open("test.txt", "w") 
    text_file.write('POST Received') 

    text_file.write(cross_id.__str__()) 
    text_file.close() 

    return render(request, 'Inventory.html', {}) 

私のテンプレートコード:

<form action='' method="POST"> 

    <button type="submit" id="btn_save" name="btn_save">Save</button> 

    {% csrf_token %} 

</form> 
実は

私は、サーバー上で何かを実行したいので、私は本当に、テンプレートを呼び出す必要はありませんのみ。しかし、今のところエラーを防ぐためにテンプレートを呼び出すだけです。

私は同じ問題について他の回答を読んだが、それらのすべてがテンプレートのCSRFトークンまたはviewsメソッドの何かを見逃していましたが、ここではケースが異なると思います。

+0

あなたは実際にそのフォームなどを投稿していますか? – Sayse

+0

いいえ、 POSTはアンドロイドAPPから来ています。 テストのため、私は今Postmanアプリから投稿してエラーメッセージを受け取ります。 –

+0

それでは、あなたのポストリクエストに有効なcsrfトークンを含める必要があります – Sayse

答えて

2

すべてのPOST要求にX-CSRFTokenヘッダーを追加する必要があります。

このヘッダーの適切な値は、csrftokenという名前のCookieから取得できます。

これをPostmanでテストするには、Interceptorプラグイン(右上隅)を有効にする必要があります。

インストールしたら、GETリクエストを/admin/login/にしてください(ブラウザのサイトからログアウトしてください)。クッキーセクションでは、csrftokenという名前のクッキーが表示され、その値がコピーされます。

ここで、同じURL(/admin/login)の要求の種類をPOSTに設定し、先にコピーした値のX-CSRFTokenというヘッダーを追加します。 とpasswordフィールドをBodyセクションに設定し、sendを押します。

X-CSRFToken

あなたのPOSTが認証を必要としない場合は、以前のGET要求からcsrftokenを使用することができます。