Django Socketio Nginx代理&会话cookie问题

时间:2012-02-05 20:04:11

标签: django http cookies nginx websocket

我已经按照本教程:http://www.stephendiehl.com/?p=309描述了如何在nginx前端后面使用socketio运行一个为Django提供服务的gevent pywsgi服务器。

正如本教程所说,除非使用tcp代理模块,否则Nginx不支持websocket。此代理模块不支持使用相同的端口进行socketio和经典服务,从我理解的配置看起来如下:

nginx侦听端口80

nginx tcp代理侦听端口7000

所有内容都转发到端口8000

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

我猜这是因为请求发送到另一个端口(7000)导致浏览器将请求标识为跨域?

将django cookie包含在请求中最简洁的方法是什么?

1 个答案:

答案 0 :(得分:1)

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

同时检查并假设WebSockets被视为HTTP,因此仍应发送HTTPOnly cookie。

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