Cookie未远程设置,但在本地运行良好

Cookie Not Being Set Remotely But Working Fine Locally

本文关键字:运行 程设置 设置 Cookie      更新时间:2023-09-26

我正在做一个简单的django应用程序,需要确保我的csrftoken设置正确,以便发布响应。

当我在本地测试并查看我的javascript调试时,一切都很好,csrf也被正确地附加了。但是,当我看到Heroku中运行的完全相同的断点时,整个getCookie函数返回一个空白。仅供参考,我使用Django Docs:中的标准getCookie函数

// 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是emtpy?里面不应该有什么东西吗?

显然,Django(出于未知原因)不喜欢提交X Header,所以我崩溃了,放了:

{% csrf_token %}

在我的模板顶部。并添加:

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

到折返数据。很难看,但它起作用了。