首页 文章

没有浏览器的Django CSRF令牌

提问于
浏览
2

我有一个使用django实现的网络应用程序(游戏) . 常规django视图与CSRF令牌一起工作得很好,但我也想让计算机玩家与服务器通信 . 我正在使用websockets(django-socketio),因此计算机玩家需要连接到SocketIOServer,但socket.io协议中的第一个请求是一个帖子,django响应CSRF验证失败 . 如何在没有浏览器的情况下获取CSRF cookie集? (或者只是绕过计算机播放器的CSRF验证,但这似乎有点不安全 . )

我试图用来将计算机播放器连接到服务器的代码如下所示:

def connect(self, host, port):
    conn  = httplib.HTTPConnection(host + ':' + str(port))
    conn.request('POST','/socket.io/1/')
    resp  = conn.getresponse()
    resp_text = resp.read()
    print resp_text
    hskey = resp_text.split(':')[0]
    websocket.enableTrace(True)
    url = 'ws://' + host + ':' + str(port) + '/socket.io/1/'
    ws = websocket.WebSocketApp(url + 'websocket/' + hskey,
            on_message=self.on_message,
            on_close=self.on_close)
    ws.on_open = self.on_open
    try:
        ws.run_forever()
    except KeyboardInterrupt:
        ws.close()

在我发布帖子请求之前的某个地方,我需要获得一个CSRF令牌 . 知道怎么做吗?

1 回答

相关问题