2017-05-03 7 views
0

django-extensionsの "runserver_plus"コマンドを使用すると、CSRFトークンに問題はありません。トークンは、ログイン後にサーバーの応答で予想されるクッキーで定義されています。私は安全でないHTTP要求(POST、PUTなど)中にHTTPヘッダーでサーバーに送り返します。 しかし、何らかの理由で、もう "runserver_plus"を使用し、従来の "runserver"コマンドに戻ります。そして、私がログイン後にサーバーから取得するCSRFトークンは、もはや動作しません。私はエラーCSRF Failed: CSRF token missing or incorrect.を得た。コードには他の変更はありません。 runserver_plusからlegacy runserverに切り替えてください。Django RESTフレームワークrunserverではなくrunserver_plusのCSRFトークンなし

私は本当に理由を理解していません。それは私にとって間違いです。もちろん

、RESTフレームワーク認証クラッセはSessionAuthentication

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.SessionAuthentication', 
    ), 
} 

誰かがどんな考えを持ってですか?

答えて

0

私はそれを発見しました。これは、CSRFTOKENを設定するためにHTTPヘッダー名の下線を使用するためです。これはjavascript:header['X_CSRFTOKEN'] = mytokenで行います。しかし、実稼働サーバーはヘッダ名を無視してrunserverを実行します。 runserver_plusは同じ動作をしません。また、httpヘッダー名に下線を付けることができます。 私のjavascriptをheader['X-CSRFTOKEN'] = mytoken(下線の代わりにダッシュ)に置き換えると動作します。

関連する問題