2016-09-02 16 views
0

テスト環境用のVirtualBox(5.0.10)にはUbuntu(64ビット)があります。 Ajaxのポストリクエストを実行しようとすると、「禁止されている(CSRFのCookieが設定されていません)」というメッセージが表示されます。Ubuntu 16.04 LTS Django CSRFクッキーが設定されていません

しかし、私のWebアプリケーションの同じポストアクションは、OS Xの開発環境下で正常に動作します。新しいUbuntuリリースのバグではないかと疑いがあります。

これはどうして起こるのでしょうか?

ありがとうございました。

編集:私はそれはあなたのシステムのバグではないと思う

 $.ajax({ 
      type: 'post', 
      url: '{% url 'add-new-watch-folder' %}', 
      data: { 
       dirs: dirsJSON, 
       csrfmiddlewaretoken: '{{ csrf_token }}' 
      }, 
      dataType: 'text', 
      success: function(result){ 
       console.log(result); 
      }, 
      error: function(xhr, status, error){ 
       console.log(error); 
      } 
     }); 
+0

郵便配達員のようないくつかのプラグインを試してみましたか? – Windsooon

+0

シンプルなポストアクションですので、私は必要はありませんでした。テスト環境でクッキーをチェックすると、 'csrftoken'と 'sessionid'クッキーが設定されていないことがわかりました。それは実際には違いです。しかし、理由を知らない。 – israfil

+0

AjaxコールのコードとCSRFトークンを取得する関数を投稿してください。 – Windsooon

答えて

0

は、開発環境には、いくつかのセキュリティメカニズムを隠します。

POSTをAJAXで使用する方法については、the Django documentationのCSRFトークンを入手してください。

また、CSRFトークンを必要としないGETを使用することもできます。

+0

あなたの答えをありがとう。 開発環境がどのようなセキュリティメカニズムを隠しているのか、さらに説明できますか?あなたが質問を読んでいない可能性があるので、問題はテスト環境上にあります。 POSTリクエストは開発環境で正常に動作するので、基本的にはDjango WebアプリケーションでAJAXでPOSTリクエストを行う方法を既に知っています。 また、POSTが必要な場所でGETリクエストを使用しないでください。 – israfil

関連する問題