同源策略:为什么XMLHttpRequest不能跨域请求资源?
浏览器安全可以分为三大块:Web ⻚面安全、浏览器网络安全和浏览器系统安全
在没有安全保障的 Web 世界中,我们是没有隐私的,因此需要安全策略来保障我
们的隐私和数据的安全。
什么是同源策略?
如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。
具体来讲,同源策略主要表现在 DOM、Web 数据和网络这三个层面。
- 第一个,DOM 层面。同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。
- 第二个,数据层面。同源策略限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。由于同源策略,我们依然无法通过第二个⻚面的 opener 来访问第一个⻚面中的 Cookie、IndexDB 或者 LocalStorage 等内容。
- 第三个,网络层面。同源策略限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点。
安全和便利性的权衡
- 页面中可以嵌入第三方资源
XSS攻击
CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码。 - 跨域资源共享和跨文档消息机制
跨域资源共享(CORS),使用该机制可以进行跨域访问控制,从而使跨域数据传输得以安全进行。
在实际应用中,经常需要两个不同源的 DOM 之间进行通信,于是浏览器中又引入了跨文档消息机制,可以通过 window.postMessage 的 JavaScript 接口来和不同源的 DOM 进行通信。
此文章为4月Day28学习笔记,内容来源于极客时间《浏览器原理》,学习使我快乐,每天进步一点点💪💪
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。