是什么原因/背景使该脚本<标签不是同源策略的一部分
What is the reason/background that the <script> tag is not part of the Same origin Policy
最近几个月我读了很多关于浏览器同源策略和跨域请求的文章。
我一直在想,为什么<script>
标签不是它的一部分?我发现这个问题被问了好几次,也在这里的stackoverflow上,但所有的回复都没有回答为什么它不是它的一部分。
这是由于历史原因还是这个想法背后的背景?
我希望有人能帮我解决这个问题。
我不知道他们决定不阻止外国<script>
的原因,但是这个决定有很多好处。
- 并非所有脚本都必须托管在您自己的站点上,因此,
- 脚本可以由内容交付网络托管,可以更快地交付它们,并允许客户端使用缓存版本的流行脚本。
- 外部脚本允许我们通过JSONP进行跨域AJAX请求。
而且,script
标签历史上早于同源策略,所以脚本可以引用不一定由同一站点托管的文件是有意义的,与a
, img
, embed
, frame
和其他标签一致。
当然部分原因是<script>
标签比同源策略早得多,所以阻止它的使用会破坏很多网页。
我相信另一个原因是相同的原始策略可以防止信息被不同的源访问,而不是创建它的源。脚本标记不允许将信息发送到它的原点,或者至少不允许发送比其他GET请求(如<style>
或<img>
)更多的信息。
虽然有可能的方法绕过它,但script
标记src
参数通常是在静态HTML中设置的固定值。无论是过去还是现在,就安全风险而言,对这种方式的跨域脚本请求都没有太多关注。另一方面,允许它确实有很大的好处—用于脚本下载的cdn,托管在云上的jQuery,等等。还需要考虑向后兼容性。
对于AJAX请求来说就不是这样了,在AJAX请求中,脚本URL可能(而且经常)来自用户输入或其他动态状态。平均而言,破解的进入门槛要比破解script
标签的低得多,其中"破解"="导致安全漏洞"。
- 来源:猜测
相关文章:
- 在<页眉>标签
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- iframe正在添加标签,需要删除它们
- 如何检查字符串的一部分与数组匹配
- 为什么可以't我使用了AJAX响应的一部分
- 如何自动调整标签的高度以适应内容
- Jquery标签插件粘贴问题
- Twitter引导程序Typeahead-Id&标签
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- 仅重新加载网页的一部分
- Morris.js折线图x轴标签在调整大小后消失
- 如何使用ViewCompiler手动编译DOM的一部分
- 如何用jQuery替换HTML标签的一部分
- VueJS - 初始化作为模板或$el属性的一部分加载的标签输入表单字段
- jqueryui模式窗口,只让其中一部分像新的Facebook照片标签窗口一样滚动
- 将文本注入“url”;img标签的一部分
- 是什么原因/背景使该脚本<标签不是同源策略的一部分
- 用iframe标签显示网站的一部分
- 为网页的某一部分的特定标签设置锚标记