揭开跨域的面纱(上)

  首先,我们想象一个场景:今天你登录了建设银行的官网(某些信息会存到你的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高级程序设计》
转载需注明出处
  

你可能感兴趣的:(网络安全)