2013-08-03 34 views
0

我正在做一個簡單的django應用程序,並且需要確保我的csrftoken設置正確,以便我可以發佈響應。Cookie未被設置爲遠程但在本地很好地工作

當我在本地測試,並看看我的javascript調試,所有與世界正確,並正確連接csrf。但是當我看到在Heroku中運行完全相同的斷點時,整個getCookie函數返回一個空白。僅供參考,我使用的是標準的getCookie函數從Django Docs

// using jQuery 
function getCookie(name) { 
    var cookieValue = null; 
    if (document.cookie && document.cookie != '') { 
     var cookies = document.cookie.split(';'); 
     for (var i = 0; i < cookies.length; i++) { 
      var cookie = jQuery.trim(cookies[i]); 
      // Does this cookie string begin with the name we want? 
      if (cookie.substring(0, name.length + 1) == (name + '=')) { 
       cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
       break; 
      } 
     } 
    } 
    return cookieValue; 
} 
var csrftoken = getCookie('csrftoken'); 

其他jQuery和JavaScript是在頁面上正常工作,但是,在這種情況下,document.cookie中完全是空的。

我試過從一堆不同的域名(herokuapp.com,domain_name等),但都一樣。爲什麼document.cookie會變得模糊?不應該有東西在裏面嗎?

+0

你在heroku的HTTPS上運行嗎? –

+0

我通過http訪問網站,是否有一些默認設置強制https? – aronchick

回答

0

顯然,Django的(原因不明)不喜歡提交X頭,所以我崩潰了,放:

{% csrf_token %} 

在我的模板的頂部。並添加:

'csrfmiddlewaretoken': $('csrfmiddlewaretoken').val()}; 

給回傳數據。醜,但它的工作。

相關問題