[tornado]使用webscoket的使用总是403错误

转载自:http://blog.csdn.net/orangleliu/article/details/42008423


使用的tornado版本为4.0+


后台:
PS D:\CodeHouse\tornado\websocket> python .\ws_app.py
WARNING:tornado.access:403 GET /ws (::1) 1.00ms
WARNING:tornado.access:403 GET /ws (::1) 1.00ms

前台:
WebSocket connection to 'ws://localhost:8080/ws' failed: Error during WebSocket handshake: Unexpected response code: 403 


修改方法:
针对websocket处理类重写同源检查的方法:

[python]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. class WebSocketHandler(tornado.websocket.WebSocketHandler):  
  2.     def check_origin(self, origin):  
  3.         return True  
  4.     ....  

这个据说是tornado 4.0版本以后新增加的一个特性。


--------------------华丽的分割线-------------------------

这里再介绍下同源定义:

同源策略限制了一个源(origin)中加载文本或脚本与来自其它源(origin)中资源的交互方式。

同源定义

一.什么是同源策略

   同源策略,它是由Netscape提出的一个著名的安全策略,现在所有的可支持JavaScript的浏览器都会使用这个策略。

  为什么需要同源策略,这里举个例子:

    假设现在没有同源策略,会发生什么事情呢?大家知道,JavaScript可以做很多东西,比如:读取/修改网页中某个值。恩,你现在打开了浏览器,在一 个tab窗口中打开了银行网站,在另外一个tab窗口中打开了一个恶意网站,而那个恶意网站挂了一个的专门修改银行信息的JavaScript,当你访问 这个恶意网站并且执行它JavaScript时,你的银行页面就会被这个JavaScript修改,后果会非常严重!而同源策略就为了防止这种事情发 生.  

   比如说,浏览器的两个tab页中分别打开了http://www.baidu.com/index.html和http: //www.google.com/index.html,其中,JavaScript1和JavaScript3是属于百度的脚本,而 JavaScript2是属于谷歌的脚本,当浏览器的tab1要运行一个脚本时,便会进行同源检查,只有和www.baidu.com同源的脚本才能被执 行,所谓同源,就是指域名、协议、端口相同。所以,tab1只能执行JavaScript1和JavaScript3脚本,而JavaScript2不能 执行,从而防止其他网页对本网页的非法篡改。

如果两个页面拥有相同的协议(protocol),端口(如果指定),和主机,那么这两个页面就属于同一个源(origin)。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值