持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
1.同源策略
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
2.同源
概念:如果两个 URL 的协议,域名,端口都相同的则是同源,其中一个不同则都不属于同源。
下表给出了与 URL的源进行对比的示例:
3.父域名与子域名
可以通过设置 document.domain,让子域名和父域名通过同源策略的检测。
备注:但是如果端口不是默认80,也会失败,因为 document.domain = "company.com";会把端口设置为 null
4.跨源网络访问
以下是可能嵌入跨源的资源的一些示例:
· 标签嵌入跨源脚本。
· 标签嵌入 CSS。由于 CSS 的松散的语法规则,CSS 的跨源需要一个设置正确的 HTTP 头部 Content-Type 。
· 通过 展示的图片。支持的图片格式包括 PNG,JPEG,GIF,BMP,SVG,...
· 通过 object、 embed 和 applet标签嵌入的插件。
· 通过 @font-face引入的字体。一些浏览器允许跨源字体(cross-origin fonts),一些需要同源字体(same-origin fonts)。
· 通过 iframe载入的任何资源。站点可以使用 [X-Frame-Options (en-US)] 消息头来阻止这种形式的跨源交互。
5. 跨源访问
可以使用 CORS 来允许跨源访问。CORS 是 HTTP 的一部分,它允许服务端来指定哪些主机可以从这个服务端加载资源。
跨域访问也可以通过 window.postMessage来实现,不过不太推荐,很容易造成安全问题。