2011-06-13 75 views
0

當我嘗試連接到我的WebSocket服務器我得到這個錯誤:跨服務器的WebSockets

Error during WebSocket handshake: origin mismatch: http://skerit.com != http://kipdola.be 

果然,我不得不把在原點響應,就像這樣:

self.client.send("Sec-WebSocket-Origin: http://kipdola.be\r\n") 
    self.client.send("Sec-WebSocket-Location: ws://kipdola.be:1234/\r\n") 

但我如何設置它以允許多個來源?

回答

1

你只回顯原點在請求中提供的用戶,請求看起來有點像這樣:

GET/HTTP/1.1 
Upgrade: WebSocket 
Connection: Upgrade 
Host: skerit.com 
Origin: http://skerit.com 

如果Origin標題是你允許的來源列表您進行服務器端的檢查,只是回聲回到客戶端的原點:

self.client.send("Sec-WebSocket-Origin: " + headers["Origin"] + "\r\n") 
+0

我想過這樣做,python是否得到這些信息? – skerit 2011-06-13 11:46:00

+0

你在使用什麼HTTP庫? Websocket通信需要生成部分通過頭文件傳遞的握手數據。標題列表應該在某處可用。 – 2011-06-13 11:49:11

+0

只是套接字庫。一旦客戶端接受,我只需要一個'server.accept()',它給了我一個對(conn,address)(Info在http://docs.python.org/library/socket.html?highlight=socket#socket .socket.accept) – skerit 2011-06-13 11:52:47