前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >同源策略(Same-origin policy)是什么?

同源策略(Same-origin policy)是什么?

原创
作者头像
Learn-anything.cn
修改2021-11-25 10:47:36
7750
修改2021-11-25 10:47:36
举报
文章被收录于专栏:learn-anything.cn

一、同源策略是什么?

一个 URL 有三部分组成:协议、域名(指向主机)、端口,只有这三个完全相同的 URL 才能称之为同源。如下,能和 http://www.example.com/dir/index.html 同源的是?

代码语言:txt
复制
| URL                                      | 结果   | 原因                               |
| ---------------------------------------- | ------ | ---------------------------------- |
| `http://www.example.com/dir2/other.html` | 同源   | 只有路径不同                       |
| `https://www.example.com/secure.html`    | 不同源 | 协议不同                           |
| `http://www.example.com:81/dir/etc.html` | 不同源 | 端口不同 ( `http://` 默认端口是80) |
| `http://news.example.com/dir/other.html` | 不同源 | 域名不同                           |

二、父域名与子域名

可以通过设置 document.domain,让子域名和父域名通过同源策略的检测。

代码语言:txt
复制
// 1、子域名下面的页面
http://store.company.com/dir/other.html 

// 2、脚本代码中修改
document.domain = "company.com";

// 3、再去访问父域名下面的页面,可以不被跨域拦截
fetch("http://company.com/dir/page.html")

备注:但是如果端口不是默认80,也会失败,因为 document.domain = "company.com"; 会把端口设置为 null

三、跨域访问

跨域访问的解决方案是 CORS,详情,看这里!

四、window.postMessage(不推荐)

跨域访问也可以通过 window.postMessage 来实现,不过不太推荐,很容易造成安全问题。window.postMessage - 详细用法说明!

五、参考文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、同源策略是什么?
  • 二、父域名与子域名
  • 三、跨域访问
  • 四、window.postMessage(不推荐)
  • 五、参考文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档