2016-08-25 12 views
0

私はWeb開発の初心者ですので、私に説明させてください。
私のPython TornadoサーバーがWebページと通信するようにします。私のWebページは、WebSocketsとonmessage関数を使用して、Tornadoサーバーから受け取るべきものを印刷します。Python Tornado:WebSocketヘッダーを設定するにはどうすればいいですか?

$(document).ready(function() { 

    var myURL = "http://localhost:8888"; 
    var source = new EventSource(myURL, { withCredentials: true }); // Access-Control-Allow-Origin 
    ... 
    source.onmessage = function(event) { 
     console.log("received new event!"); 
    }; 
    ... 
}); // ready() 

私はそうCORSが有効になっているtruewithCredentialsパラメータを設定しています:基本的には、ここにHTML、JavaScriptの一部です。

竜巻側で返信するWebSocketクラスがありますが、ヘッダを設定してAccess-Control-Allow-Originを有効にする方法がわかりません。ここに竜巻コードがあります:

class EchoWebSocket(tornado.websocket.WebSocketHandler): 

    def check_origin(self, origin): 
    return True 

    def on_message(self, message): 
    self.write_message(u"Received message: " + message) 

def make_app(): 
    return tornado.web.Application([ ('/', EchoWebSocket), ]) 

if __name__ == '__main__': 
    app = make_app() 
    app.listen(8888) 
    print 'listening on port 8888...' 
    # start main loop 
    tornado.ioloop.IOLoop.current().start() 

私のブラウザには次のエラーがあります。

GET http://localhost:8888/ [HTTP/1.1 400 Bad Request 1ms] 
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8888/. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 

私は何が欠けていますか?

答えて

2

あなたのJavaScriptはEventSourceを使用していますが、サーバーはWebSocketを提供しています。これらは2つの全く異なるものです。それらのうちの1つを他と一致するように変更する必要があります。

関連する問題