J'ai trouvé ce script python qui devrait me permettre d'ouvrir WebSocket . Cependant, je reçois l'avertissement [W 1402720 14:44:35 web:1811] 403 GET / (192.168.0.102) 11.02 ms
sur mon terminal Linux lorsque j'essaie d'ouvrir le WebSocket lui-même (à l'aide du plugin Old WebSocket Terminal Chrome). Les messages "connexion ouverte", "connexion fermée" et "message reçu" ne sont jamais imprimés dans la fenêtre du terminal.
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 __== "__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()
s'il-vous-plait ajoutez
def check_Origin(self, Origin):
return True
dans la classe MyHandler comme ça
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")
Des DOC:
Par défaut, [check_Origin] rejette toutes les demandes ayant une origine sur un hôte autre que celui-là.
C'est une protection de sécurité contre les attaques de script entre sites sur les navigateurs, puisque les WebSockets sont autorisés à contourner l’habituel origine-même politiques et ne pas utiliser les en-têtes CORS.
Et encore:
Ceci est une mesure de sécurité importante; ne le désactivez pas sans comprendre les implications pour la sécurité. En particulier, si votre L’authentification est basée sur les cookies, vous devez soit limiter les origines autorisé par check_Origin () ou implémentez votre propre protection, semblable à XSRF pour les connexions websocket. Voir ces articles pour plus.
Lien .
Solution légèrement modifiée de @ maxhawkdown.
from tornado.util import PY3
if PY3:
from urllib.parse import urlparse # py2
xrange = range
else:
from urlparse import urlparse # py3
class ChatHandler(tornado.websocket.WebSocketHandler):
CORS_ORIGINS = ['localhost']
def check_Origin(self, Origin):
parsed_Origin = urlparse(Origin)
# parsed_Origin.netloc.lower() gives localhost:3333
return parsed_Origin.hostname in self.CORS_ORIGINS