揭开跨域的面纱(上)
来源:互联网 发布:五毛特效app软件 编辑:程序博客网 时间:2024/05/17 02:23
首先,我们想象一个场景:今天你登录了建设银行的官网(某些信息会存到你的cookie上),碰巧你同时打开了个evil的网页,如果这个evil的网页可以通过cookie获取到你银行卡的账号密码,天啊! 这个世界太危险了。
所以,我们需要避免其他网站能执行来自建设银行的脚本,大牛们就想出了个约定——”同源策略” 。
同源
- 协议相同
- 域名相同
- 端口相同
如果两个网页之间只要存在 协议 || 域名 || 端口 不一致,就会禁止cookie等共享。不过现在的大网站会把资源分散到多个服务器上,这样可能会出现是非同源的情况,这时候“跨域”出来了。
试图访问限制之外的资源,都会引发安全错误,除非采用被认可的跨域解决方案,这个解决方案叫做CORS ( Cross-Origin Resource Sharing , 跨域资源共享)。
CORS是W3C的一个工作草案,定义了在必须访问跨域资源时,浏览器与服务器应该如何沟通。CORS实际是通过HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是否成功。
比如,再发送请求时,添加Origin的头部信息:
origin: http://www.baidu.com
服务器如果认为这个请求可以接受,就会设置Access-Control-Allow-Origin:
Access-Control-Allow-Origin: http://www.baidu.com
当这个头部不存在或不匹配,浏览器则拒绝请求。另外,请求和响应都不包含cookie信息.
后面会给出各浏览器对CORS的实现和其他跨域技术(JSONP, img标签, Comet)。
参考《JavaScript高级程序设计》
转载需注明出处
- 揭开跨域的面纱(上)
- 揭开跨域的面纱(中)
- 揭开跨域的面纱(下)
- 冰河浅析 - 揭开木马的神秘面纱(上)
- 揭开木马的神秘面纱(二)
- 揭开木马的神秘面纱(三)
- 揭开木马的神秘面纱(四)
- 揭开Socket编程的面纱(转)
- 揭开Socket编程的面纱(转)
- 揭开站点导航的面纱(一)
- 揭开Socket编程的面纱(1)
- 揭开线性表的面纱(概述)
- 揭开隐藏的面纱
- 揭开socket的面纱
- 揭开宇宙的面纱
- 揭开数字电视的面纱!
- 揭开Eclipse的面纱
- 揭开Wayland的面纱
- servlet
- 网络编程之UDP协议学习
- 本地删除文件svn找回
- MySQL索引优化——覆盖索引
- 【电路第七章之III篇】一阶电路的全响应分析
- 揭开跨域的面纱(上)
- admin_move_table的重组机制验证(cluster index)
- SVN update拉取后撤回
- Tomcat8.0配置虚拟主机
- Java Set集合
- sam2gff3
- 【JZOJ 1319】 邮递员
- 面试题2——单例模式
- AVL树详解