我发现这个python脚本应该允许我打开一个WebSocket.但是,[W 1402720 14:44:35 web:1811] 403 GET / (192.168.0.102) 11.02 ms
当我尝试打开实际的WebSocket(使用Old WebSocket Terminal Chrome插件)时,我在Linux终端中收到警告.永远不会在终端窗口中打印消息"连接已打开","连接已关闭"和"已接收消息".
import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web import tornado.websocket class MyHandler(tornado.websocket.WebSocketHandler): def open(self): print "connection opened" self.write_message("connection opened") def on_close(self): print "connection closed" def on_message(self,message): print "Message received: {}".format(message) self.write_message("message received") if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application(handlers=[(r"/",MyHandler)]) server = tornado.httpserver.HTTPServer(app) server.listen(8888) tornado.ioloop.IOLoop.instance().start()
小智.. 99
请加
def check_origin(self, origin): return True
在类MyHandler中这样
class MyHandler(tornado.websocket.WebSocketHandler): def check_origin(self, origin): return True def open(self): print "connection opened" self.write_message("connection opened") def on_close(self): print "connection closed" def on_message(self,message): print "Message received: {}".format(message) self.write_message("message received")
来自DOC:
默认情况下,[ check_origin ]拒绝所有在此主机以外的主机上具有原点的请求.
这是针对浏览器上的跨站点脚本攻击的安全保护,因为允许WebSockets绕过通常的同源策略并且不使用CORS头.
然后再次:
这是一项重要的安全措施; 如果不了解安全隐患,请不要禁用它.特别是,如果您的身份验证是基于cookie的,则必须限制check_origin()允许的来源,或者为websocket连接实现自己的类似XSRF的保护.请参阅这些文章了解更多
链接.