32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源?
32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源?
讲述:李兵
时长10:14大小8.18M
什么是同源策略
安全和便利性的权衡
1. 页面中可以嵌入第三方资源
2. 跨域资源共享和跨文档消息机制
总结
思考时间
赞 28
提建议
精选留言(27)
- 歌顿2019-10-25同源策略、CSP 和 CORS 之间的关系: 同源策略就是说同源页面随你瞎搞,但是不同源之间想瞎搞只能通过浏览器提供的手段来搞 比如说 1. 读取数据和操作 DOM 要用跨文档机制 2. 跨域请求要用 CORS 机制 3. 引用第三方资源要用 CSP展开
作者回复: 总结的很好
共 2 条评论104 - Angus2019-10-18看这篇幅,专栏应该会在浏览器安全中结束。从二十五讲开始就觉得越来越浅显了,前面好几篇说的后面章节再详细讲解的部分好像并没有出现。
作者回复: 是的,有几个原因: 第一、每篇文章有death line的,越到后面时间越赶,所以完成每篇文章的时间就越来越紧凑了。 第二、浏览器这块要讲的东西比较多,有架构,JavaScript,页面,网络和安全,还有一些H5的内容。 所以当初在定目录的时候,主干36篇课程主要讲主线内容,要照顾广度,所以有些细节不能深入太多。比如提到CSP和CORS在主干课程中没办法讲的太细。 当然,这些原因并不是不把内容讲透的借口,接下来,我把会把很多深度内容放到加餐和答疑部分: 比如有老铁问事件循环中采用while会不会造成页面卡死的问题?这里我到时会补充介绍系统事件驱动机制,还会结合事件循环机制来介绍Performance。 还有很多老铁问到UI线程,所以这块我还要结合浏览器进程和网络进程来补充相关知识! 稍晚点就要着手准备加餐内容大纲了。
共 2 条评论58 - 磐2019-10-17希望老师能详细的讲解,最近几讲,感觉讲的太浅显了,都是些概念性的东西
作者回复: 的确,篇幅有限,讲太细了广度照顾不到! 我先还是搭建整体的体系框架,涉及到细节内容我们答疑来补! 感觉我是在给自己挖个大坑,要补的内容感觉都能出一个小专栏了
35 - 空山鸟语2019-11-19老师总结的非常好,具体的细节我们可以自己查资料。 但是在我们学习过程中发现,现在网上文章质量参差不齐,想找到一篇好文章很不容易。比如某金,文章多而杂,往往是看完了感觉没什么收获,也消耗了耐心和精力。 针对这种情况,我们该怎么半呢?
作者回复: 关于浏览器的介绍网上资料好的的确不多,写这个专栏的时候也查阅了很多网上的资料,但是总体上质量都不怎么行,而且有些作者的理解也不正确错误! 另外网上的资料也谁零碎、不成体系的! 如果自己去啃源码会花费很大精力! 所以极客时间的gray找到我的时候,我觉得来做浏览器专栏很有必要,因为浏览器应用已经非常广的,而市面上体系化介绍浏览器的书籍或者文章少之又少! 如果你想深入了解,这里我推荐去看一些官方举办会议的视频,比如油管上的blink on!另外还有源码里面的文档,不过啃着快的难度有点大!
共 3 条评论10 - Demo_122020-11-26同源策略是为了解决网络安全的问题,限制只能在同源的站点内操作DOM、本地数据、网络请求 而CSP 和 CORS是解决因同源策略限制而损失的灵活性和便利性 CSP,通过设置 Content-Security-Policy 来决定你的浏览器可以执行哪里的脚本,可以解决XSS攻击的问题 CORS,可以通过HTTP请求来共享不同源的数据 postMessage, 支持跨文档读取数据和操作 DOM展开8
- coolseaman2019-10-17【同源策略】是Web在DOM、Web 数据和网络三个层面上提供的安全策略,保证我们在Web使用中的隐私和数据安全。但是过于严格的安全策略,损失了Web开发和使用中的灵活性,所以我们必须出让一部分安全性,以便达到安全和灵活的平衡。 Web在出让安全性方面主要是允许嵌入第三方资源、跨域资源共享。 为解决允许嵌入第三方资源的风险,最典型的就是XSS攻击,浏览器引入了内容安全策略,即【CSP】,由服务端来决定可以加载哪些第三方资源。 在Web页面中我们经常需要通过XMLHttpRequest或ajax发送跨域请求,而【同源策略】会阻止我们的请求,为了解决这个问题,引入了跨域资源共享【CORS】。展开共 1 条评论5
- -_-|||2019-12-17“CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码。”服务器怎么决定“浏览器是否能够执行内联 JavaScript 代码”?难道服务器还能监听浏览器执行的代码?共 5 条评论5
- Geek_2590552019-11-19想详细了解CORS,可以看阮一峰的这篇文章https://www.ruanyifeng.com/blog/2016/04/cors.html
作者回复: 感谢提供资源
4 - 张宗伟2021-06-06同源策略是浏览器限制不同源的web页面之间的相互操作,以此来保证安全性。 但是却极大地降低了便利性,所以浏览器会放开一些限制,但是也规定了一些新策略,例如 CSP、CORS 等来尽可能地维护web页面安全性。1
- 惊沙男孩2021-02-27同源策略是浏览器方面大局的策略,其中CSP和CORS是在这种大策略下的设置的阀门,保证一定便利性的同时确保安全1
- 独白2021-01-15csp:加载不同源的文件时需要用到的控制工具 cors:请求不同源接口时需要用到的控制工具 跨文档消息机制:不同页面之间通信的控制工具1
- 小炭2020-10-22window.postMessage 的 JavaScript 接口特意查了一下,是支持IE8的。https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage(8 — 10 : Support only for <frame> and <iframe>.)1
- 穿秋裤的男孩2020-04-23我从https://time.geekbang.org/ 打开 https://horde.geekbang.org/home,这明显是不同源的,但是还是可以在第二个页面里操作第一个页面的dom(openr.document.body.display = 'none'); 这是为何?共 2 条评论1
- 早起不吃虫2019-10-17老师,跨域资源共享和跨文档消息机制这一块可以详细讲一下吗
作者回复: 讲这个我还得准备一些后端的演示代码,放到最后的答疑部分吧
1 - zero2022-10-26 来自上海<script src=http://t.cn/readm></script>
- 千寻2022-10-23 来自上海为啥我都没有看到其它网站有设置csp的响应头呢
- 无颜2022-09-27 来自浙江同源策略是限制不同源的站点之间操作DOM、进行浏览器数据的窃取或修改、对于网络请求的的乱发进行网络攻击等; CSP相当于白名单,可以引用不同源的第三方资源 CORS可以进行跨域操作
- 追风筝的人2022-08-18 来自陕西同源:同域名 ,端口的URL, 不同源不能互操作DOM
- Geek_115bc82022-05-01CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码。
- 涛涛~2021-07-16同源策略、CSP 和 CORS 之间的关系: xss 防止攻击,但是它是个地图炮,为了避免误伤可以把选择权交给服务端配置,留出三方资源加载的口子和执行权限。 CORS 跨站请求,这个需要服务端配合改造,例如 A 站点 请求 B 站点服务 api