js同源战略之同享cookie

什么是同源

同domain(或ip),同端口,同协定视为同一个域,一个域内的剧本仅仅具有本域内的权限,能够理解为本域剧本只能读写本域内的资本,而无法接见别的域的资本。这类平安限定称为同源战略。

为何要有同源限定

同源战略的目标重要是为了防备歹意猎取/修正网站数据。而这些数据重要包含cookie,LocalStorage,DOM,以及发送的AJAX要求。
假定如今没有同源战略,会发作什么事变呢?人人晓得,JavaScript能够做许多东西,比方:读取/修正网页中某个值。恩,你如今打开了浏览器,在一 个tab窗口中打开了银行网站,在别的一个tab窗口中打开了一个歹意网站,而谁人歹意网站挂了一个的特地修正银行信息的JavaScript,当你接见 这个歹意网站而且实行它JavaScript时,你的银行页面就会被这个JavaScript修正,效果会异常严峻!而同源战略就为了防备这类事变发作。
所以,我们能够晓得,同源战略是必需的,然则,有的时刻我们照样要躲避同源战略的限定,比方说从A网站跳到B网站时,我们要读到A网站的cookie。

document.domain

document.domain属性用来获得当前网页的域名。
我们也能够给document.domain属性赋值,不过是有限定的,你只能赋成当前的域名或许基本域名。
比方:你当前域名是qa-my.test.segmentgault.com
那末你就能够设置

document.domain = ".test.segmentgault.com"

或许

document.domain = "qa-my.test.segmentgault.com"

上面的赋值都是胜利的,由于qa-my.test.segmentgault.com是当前的域名,而.test.segmentgault.com是基本域名。
然则下面的赋值就会出来”参数无效”的毛病:

document.domain = "google.com"

《js同源战略之同享cookie》

由于google.com即不是当前的域名也不是当前域名的基本域名,所以会有毛病涌现。
这是为了防备有人歹意修正document.domain来完成跨域盗取数据。

应用document.domain 完成同享cookie

Cookie 是服务器写入浏览器的一小段信息,只需同源的网页才同享。浏览器许可基本域名雷同的网站间经由过程设置document.domain同享 Cookie。
举例来说,A网页是

http://my.segmentfault.com/a.html

B网页是

http://he.segmentfault.com/b.html

那末只需设置雷同的document.domain,两个网页就能够同享Cookie。

document.domain = 'segmentfault.com'

如今,A网页经由过程剧本设置一个 Cookie

document.cookie = "domainTest=hello world"

B网页就能够读到这个Cookie

    原文作者:wupengyu
    原文地址: https://segmentfault.com/a/1190000005987511
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞