浏览器同源策略及Cookie的作用域
浏览器同源策略及Cookie的作⽤域
转载地址:
如题,本⽂主要介绍两⽅⾯内容:⾸先简单介绍浏览器的同源策略与其带来的问题;其次,介绍Cookie的作⽤域,即Cookie与Domain(域名)的上传关系,即浏览器在什么时候提交什么Cookie到服务器,即浏览器是通过怎样的规则筛选Cookie并提交到服务器的。
⼀、    浏览器同源策略
1.1  概述
纸灯笼怎么做1995年,同源政策由 Netscape 公司引⼊浏览器。⽬前,所有浏览器都实⾏这个政策。最初,它的含义是指,A⽹页设置的Cookie,B⽹页不能打开,除⾮这两个⽹页"同源"。所谓"同源"指的是"三个相同":
  举例来说,ample/dir/page.这个⽹址,协议是,域名是ample,端
取店名⼝是80(默认端⼝可以省略)。它的同源情况如下:
1.2  ⽬的
  同源政策的⽬的,是为了保证⽤户信息的安全,防⽌恶意的⽹站窃取数据。设想这样⼀种情况:A⽹站是⼀家银⾏,⽤户登录以后,⼜去浏览其他⽹站。如果其他⽹站可以读取A⽹站的 Cookie,会发⽣什么。
  很显然,如果 Cookie包含隐私(⽐如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往⽤来保存⽤户的登录状态,如果⽤户没有退出登录,其他⽹站就可以冒充⽤户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。由此可见,"同源政策"是必需的,否则Cookie 可以共享,互联⽹就毫⽆安全可⾔了。
1.3  限制范围
  随着互联⽹的发展,"同源政策"越来越严格。⽬前,如果⾮同源,共有三种⾏为受到限制:
  虽然这些限制是必要的,但是有时很不⽅便,合理的⽤途也受到影响。例如,我同⼀个站点的两个不同域名不能共享Cookie;再例如,我的前端页⾯项⽬的域名与我后端Jetty服务的域名不同,那么我就⽆法发送Ajax请求来访问Jetty服务,等等。
  也就是说同源策略会带来⼀系列跨域访问的问题,之后的我们会介绍如何来规避这些问题,主要介绍JSONP与CORS两种⽅案。
⼆、    Cookie作⽤域
  2.1  Cookie概述
  Cookie,顾名思义,⼩甜⼼,少⾷即可,多吃⽆益。主要是通过浏览器保存在客户端的⼀些安全性要求不⾼的临时数据。
  2.2  Cookie两个重要属性
  Cookie有两个很重要的属性:Domain和Path,⽤来指⽰此Cookie的作⽤域:
  Domain告诉浏览器当前要添加的Cookie的域名归属,如果没有明确指明则默认为当前域名,⽐如通过访问www.vinceruan.info添加的Cookie的域名默认就是www.vinceruan.info,通过访问blog.vinceruan.info所⽣成的Cookie的域名就是blog.vinceruan.info。
  Path告诉浏览器当前要添加的Cookie的路径归属,如果没有明确指明则默认为当前路径,⽐如通过访问
经典三级片www.vinceruan.info/java/hotspot.html添加的Cookie的默认路径就是/java/,通过blog.vinceruan.info/java/hotspot.html⽣成的Cookie的路径也是/java/。
  2.3  Cookie作⽤域最新存贷款利率表
  浏览器提交的Cookie需要满⾜以下两点: 1.当前域名或者⽗域名下的Cookie;2.当前路径或⽗路径下的Cookie。要满⾜以上两个条件的Cookie才会被提交。举个例⼦:有4个Cookie:
  当我访问blog.vinceruan.info时:
  这⾥需要注意的是, 在浏览器看来. www.vinceruan.info不是blog.vinceruan.info的⽗域名,⽽vinceruan.info才是
blog.vinceruan.info的⽗域名, www.vinceruan.info也算是⼀个⼆级域名(这点如果你提交过域名到DNS服务器商的应该会知道,⼀般我们需要显式提交www.vinceruan.info和vinceruan.info, 否则www.vinceruan.info==vinceruan.info是不成⽴的).
  所以如果我们需要在所有⼆级域名下共享islogin=1的Cookie,⽤java代码如下:
如果要在所有的⼆级域名下的/java/路径下共享silogin=1的Cookie,⽤java代码如下:
没想到我如此虚荣
三、    总结
三个字网名上⾯介绍了浏览器具有同源策略:协议相同、域名相同、端⼝相同,⽽由此也带来了⼀系列的跨域资源访问问题。还介绍了浏览器筛选Cookie并提交到服务器的规则:当前域名或者⽗域名下的并且是当前路径或⽗路径下的Cookie才会被提交到服务器。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。