1

我刚刚将一个 Web 应用程序投入生产,并且对我的 nodejs 的请求不再包含 Django 在我的本地主机(它正在工作的地方)上默认设置的用户 cookie。

我的nodejs像这样寻找cookie

io.configure(function(){
    io.set('authorization', function(data, accept){
        if (data.headers.cookie) {
            data.cookie = cookie_reader.parse(data.headers.cookie);
            return accept(null, true);
        }
        return accept('error',false);
    });
    io.set('log level',1);
});

并且在本地主机上已经得到了这个

cookie: 'username="name:1V7yRg:n_Blpzr2HtxmlBOzCipxX9ZlJ9U"; password="root:1V7yRg:Dos81LjpauTABHrN01L1aim-EGA"; csrftoken=UwYBgHUWFIEEKleM8et1GS9FuUPEmgKF; sessionid=6qmyso9qkbxet4isdb6gg9nxmcnw4rp3' },

在请求头中。

但在生产中,标题是相同的,但没有更多的 cookie。Django 只在本地主机上设置吗?我怎样才能让它在生产中工作?

我已经尝试在我的 settings.py 中设置这些

CSRF_COOKIE_DOMAIN = '.example.com'
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = False

但到目前为止还不好。

任何见解都会很棒。

4

1 回答 1

0

我刚刚想通了。我正在像这样向客户端上的nodejs发出请求

Message.socket = io.connect('http://123.456.789.10:5000');

我在哪里使用了我的 nodejs 正在侦听的各自的 IP 地址和端口。这被认为是跨域的,因此浏览器不会在请求中包含 cookie。通过将其更改为轻松修复

Message.socket = io.connect('http://www.mydomain.com:5000');
于 2013-08-12T23:07:49.990 回答