2017-03-30 3 views
2

私のリアクションアプリケーション内からdjangoビューへの単純なポストリクエストを作成しようとすると403が表示されます。ここに私のコードです:リアクションアプリケーション内のDjangoエンドポイントにaxios.postを使用するとエラーコード

views.py

@csrf_protect 
def test_view(): 
    if (request.method == 'POST'): 
     return HttpResponse(request.body) 

Login.js(リアクトコンポーネント)

import Cookies from 'js-cookie'; 

//React constructor { 

    test_view() { 
     const csrftoken = Cookies.get('csrftoken'); 
     const config = { 
     headers: {'HTTP_X_CSRFTOKEN': csrftoken}, 
     } 
     axios.post('/prototype/hello/', {firstName: 'Fred'}, config) 
     .then(res => {console.log("Test res: " + res.data)}); 
    } 
//} 

urls.py

url(r'^hello', views.test_view, name='test-view'), 

ことが可能「jsのことです-cookie 'ライブラリが動作していませんか? index.html以外のdjangoテンプレートを使用していないため、どこにでも{%csrf_token%}はありません。代わりに、私は@csrf_protectデコレータを持っています。私はそれがdocsに基づいて行うべきだと私は思う。

+0

csrfmiddlewareを無効にしなかった場合は、csrf_protectを使用する必要はありません。クッキーがcsrf_tokenを取得したことを確認しましたか? –

答えて

2

以下の設定を行うだけです。それ以外は必要ありません。

axios.defaults.xsrfCookieName = 'csrftoken'; 
axios.defaults.xsrfHeaderName = 'X-CSRFToken'; 
関連する問題