2017-09-26 16:20:15 来源: 湖北成人高考
1、 基调
一般情况下,禁止一个域从另一个域读取数据,却可以使用某些从其他域拿到的资源。比如说,允许一个域执行、渲染、应用从其他域获取到的脚本、图片、样式;同样,一个域可以展示从其他域获取的内容,比如在 frame 中显示 html 文档。网络资源也可以选择性的让其他域来读取自己的信息,比如使用 Cross-Origin Resource Sharing,这种情况下访问权是针对单个域授 权的。
同源策略限制消息从一个域发送到另一个域。比如说同源策略允许域间的 GET 和 POST 方式的 HTTP 请求,却禁止域间的 PUT 和 DELETE 方式的请求。同时,域在发送请求到自己时可以自定义 HTTP 请求头,发送请求到其他域不能自定义请求头。
同源策略的控制者是浏览器,浏览器可以控制不同域之间的资源的访问或相互操作,但不控制自己对不同域之间的资源的操作和访问。
2、 什么是源
RFC6454 规定一个资源的源由资源的 URI 中的(协议,主机,端口)这一个三元组来确定(IE 中没有把端口纳入源的属性)。
对于一个被执行的脚本来说,他的源属性是执行这个脚本的资源的源属性。比如一个页面加载了来自另一个域的脚本,这个脚本执行的时候向页面所在域发送请求被视为同源。
相对路径和无法明确源属性的协议(javascript:,data:,about:blank)的资源的源,取将这些资源载入的页面的源。
IE 没有将端口作为同源的组成部分,原因是 IE 历史垄断的市场占有率导致的历史遗留问题,IE8 尝试在原生的 XMLHTTPRequest 中使用端口作为同源的一部分(标准化),但效果不好,一些依照老 IE 特性开发的站点,为了保持兼容性,继续使用了原有的 MSXML 方式的 XMLHTTPRequest。所以在 IE8-11 的版本都没有考虑端口作为同源的判断条件。
3、 怎样算同源
两个资源的组成源的属性(协议,主机,端口),完全一致,这两个资源才同源。这里如果两个资源的协议分别为 http 和 https 被认为不同源。
下一篇: PHP开发常用的五种缓存技术技术
学员满意度
95%
已注册学校:1552家
已登记课程:34559门
已成功报名:11588人
顶部