【问题标题】:Django Socketio Nginx proxy & session cookie issueDjango Socketio Nginx 代理和会话 cookie 问题
【发布时间】:2012-02-27 11:31:46
【问题描述】:

我遵循了这个教程:http://www.stephendiehl.com/?p=309 描述了如何运行一个 gevent pywsgi 服务器,它在 nginx 前端后面使用 socketio 为 Django 提供服务。

正如本教程所说,Nginx 不支持 websocket,除非使用 tcp 代理模块。这个代理模块不支持socketio和经典服务使用相同的端口,据我了解配置如下:

nginx 监听 80 端口

nginx tcp 代理监听 7000 端口

所有内容都转发到端口 8000

问题:生成的 socketio 请求不包含包含会话 id 的 django cookie,因此我的 django 视图中没有关于请求用户的信息。

我猜这是因为请求是向另一个端口(7000)发出的,导致浏览器将请求识别为跨域?

将 django cookie 包含到请求中的最干净的方法是什么?

【问题讨论】:

    标签: django http cookies nginx websocket


    【解决方案1】:

    this question 中的大多数答案似乎表明端口无关紧要。

    还检查过,据说 WebSockets 被视为 HTTP,因此仍应发送 HTTPOnly cookie。

    SocketIO 似乎正在使用自定义会话管理器来跟踪用户。也许尝试将其链接起来?

    【讨论】:

    • 您好,感谢您的回答。我现在确实相信它更多的是关于协议而不是端口(就像你刚才说的那样)。我没有成功链接两个会话,所以我退回到长轮询。
    猜你喜欢
    • 2020-11-27
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    相关资源
    最近更新 更多