Django を使用して実装した Web アプリ (ゲーム) があります。通常の 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 トークンを取得する必要があります。それを行う方法はありますか?