浏览器同源策略及Cookie的作用域

所谓"同源"指的是"三个相同":

1.协议相同
2.域名相同
3.端口相同

当着三个地方相同才算同源

例如:http://www.example.com:8888/dir/page.html

协议是http://
域名是www.example.com
端口是8888

采用同源策略的目的:是为了保证用户信息的安全,防止恶意的网站窃取数据。设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。

如果其他网站可以读取A网站的 Cookie,会发生什么?如果 Cookie包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用

户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。由此可见,"同源政

策"是必需的,否则Cookie 可以共享,互联网就毫无安全可言了

缺点:如果不是同源

(1)Cookie、LocalStorage和IndexDB 无法读取
(2)DOM无法获得
(3)AJAX请求不能发送

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/

浏览器提交的Cookie需要满足以下两点:

1.当前域名或者父域名下的Cookie;
2.当前路径或父路径下的Cookie

要满足以上两个条件的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代码如下:

时间: 2024-11-03 21:37:32

浏览器同源策略及Cookie的作用域的相关文章

浏览器同源策略与跨域出现原因

什么是同源策略? 同源策略(Same origin policy)是一种约定,它是浏览器最核心的也是最基本的安全功能,web也是构建在同源策略基础上,浏览器只是针对同源策略的一种实现. 它是由Netscape提出的一个著名的安全策略,目前支持JavaScript的浏览器都会使用找个策略. 什么是同源? 同源:域名/端口/协议相同 同源分为两种情况:1.dom的同源策略:禁止对不同页面的dom进行操作 2.XMLHttpRequest同源:禁止使用XHR对象向不同源的ip发起http请求 为什么会

浏览器同源策略,及跨域解决方案

一.Origin(源) 源由下面三个部分组成: 域名 端口 协议 两个 URL ,只有这三个都相同的情况下,才可以称为同源. 下来就以 "http://www.example.com/page.html" 这个链接来比较说明: 对比URL 结果 原因 http://m.example.com/page.html 不同源 域名不同 https://www.example.com/page.html 不同源 协议不同 http://www.example.com:8080/page.htm

浏览器同源策略与ajax跨域方法汇总

原文 什么是同源策略 如果你进行过前端开发,肯定或多或少会听说过.接触过所谓的同源策略.那么什么是同源策略呢? 要了解同源策略,首先得理解“源”.在这个语境下,源(origin)其实就是指的URL.所以,我们需要先理解URL的组成.看看这个URL: http://www.jianshu.com/p/bc7b8d542dcd 我们可以将它拆解为下面几个部分协议.域名和路径: http :// www.jianshu.com /p/bc7b8d542dcd ${protocol}:// ${host

【Python-Django】浏览器同源策略

1995年,同源政策由 Netscape 公司引入浏览器.目前,所有浏览器都实行这个政策. 同源策略是浏览器的一个安全功能,不同源的客户端脚本(js文件)在没有明确授权的情况下,不能读写对方资源.只有同一个源的脚本赋予dom.读写cookie.session.ajax等操作的权限. url由协议.域名.端口和路径组成,如果两个url的协议.域名和端口相同,则这两个url是同源的. url 是否同源 原因 http://www.example.com/dir2/other.html 是 协议.端口

浏览器同源策略深入

浏览器对于同源的认定是:协议.域名.端口号必须精确匹配,一模一样 个人总结同源策略的一个首要宗旨是: 阻止能向外传输信息的模块(如javascript)获取到来自不同源的资源,不能获取也就从源头阻止了资源和其中信息的泄露. 很重要的一点是,同源策略阻止的是跨域资源的获取,而不是阻止跨域的请求,请求可以正常发出,但返回的内容被阻止,无法让JS脚本获取 例子: 1.<script>.<img>.<iframe>.<link>等标签都能跨域加载内容,但无法对外发送

禁用浏览器同源策略的方法

前后联调的时候总会涉及到跨域,平时我们跨域主要的方法是通过cors进行跨域,但是通过cors进行跨域有的时候会涉及到数据安全的问题,这时候我们可以通过禁用本地浏览器的同源策略来进行跨域的联调 ie的禁用同源策略设置,进入ie的网际网路选项设置,然后选择安全性,再选择自订等级,然后下拉,找到「存取跨网络的资料来源」,选择启用即可. chrome的话可以通过在命令行,输入「chrome --disable-web-security」,它会自己再新开启一个实例,开启chrome的时候显示一系列黄色的文

[oldboy-django][2深入django]浏览器同源策略 + JSONP + cros

浏览器的同源策略: - 同源: 同方法,同域名,同端口 http://www.baidu.com:8000 http: 方法 www.baidu.com: 域名 8000: 端口 - 定义 网上解析非常好的一篇 http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html - 限制 ajax只能发给同源的网址: 限制原理: 浏览器request--->跨域服务器 浏览器阻止接收<----跨域服务器响应, 服务器已经做出响应了,而且

浏览器同源策略的概念?

摘录知乎的回答: 同domain(或ip),同端口,同协议视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源.这种安全限制称为同源策略.

同源策略、跨域解决方案

一.定义 1.什么是源? 源(origin)就是协议.域名和端口号.以上url中的源就是:http://www.company.com:80若地址里面的协议.域名和端口号均相同则属于同源.以下是相对于 http://www.a.com/test/index.html 的同源检测? http://www.a.com/dir/page.html ----成功? http://www.child.a.com/test/index.html ----失败,域名不同? https://www.a.com/