[tornado]使用webscoket的使用总是403错误
2016-11-10 15:48
225 查看
转载自: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?
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True
....
这个据说是tornado 4.0版本以后新增加的一个特性。
参考网址:http://www.unjeep.com/q/4940842.htm
--------------------华丽的分割线-------------------------
这里再介绍下同源定义:
javascript同源策略
同源策略限制了一个源(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)。
使用的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?
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True
....
这个据说是tornado 4.0版本以后新增加的一个特性。
参考网址:http://www.unjeep.com/q/4940842.htm
--------------------华丽的分割线-------------------------
这里再介绍下同源定义:
javascript同源策略
同源策略限制了一个源(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)。
相关文章推荐
- [tornado]使用webscoket的使用总是403错误
- [tornado]使用webscoket的使用总是403错误
- 使用System.Web.Mail发送Mail的错误解决方案
- [subversion] 使用中的错误列举 ra_local , 403 Forbidden 清除ToitoiseSVN的认证
- 玩蛇记-使用Tornado构建高性能Web之二-autoreload
- 我的VS2005采用的是web开发设置。不知道动到了那里,现在每次按F5启动调试的时候总是不能成功启动调试。效果和按CTRL+F5一样。就是把项目显示在了浏览器之后,那个启动调试的绿色按钮还可以使用,不是暗色的。
- msn突然无法使用显示错误总是8000401a解决方法
- Servlet中使用web.xml标签元素自定义错误页面备忘
- 在根 web.config 文件之外使用注册为 allowDefinition='MachineToWebRoot' 的节是错误的[原创]
- 使用Ajax控件错误:sys.WebForms.PageRequestManagerServerErrorException
- eWebEditor在IE8中使用时候总是报错“没有对象”。解决办法如下:
- AJAX技术与asp.net 2.0的完美结合之Timer的web应用 及使用AJAX控件时的“Sys 未定义”错误解决办法
- 在web项目中使用session传递错误信息(草稿)
- web服务器报告了以下错误"Http/1.1 403 Access Forbidden"
- 玩蛇记-使用tornado构建高性能Web应用之一
- 使用VS2003创建WEB程序的时候出现"AutoMation服务器不能创建对象"错误
- AJAX技术与asp.net 2.0的完美结合之Timer的web应用 及使用AJAX控件时的“Sys 未定义”错误解决办法
- 错误处理:此网页不允许使用基本类型"System.Web.UI.MasterPage”该类型未注册为安全类型
- 解决使用HttpWebRequest时总是提示登陆超时的问题
- 当您通过使用 InfoPath 2010 表单连接到 Web 服务时沙盒中处理的代码包含的、 不返回的数据或您收到一条错误消息