为什么这个 JavaScript 调用没有打破“同源策略”
Why doesn't this JavaScript call break the "same origin policy"
我正在使用jQuery显示一个外部JavaScript文件。"同源策略"未被破坏的原因是否因为它不是 AJAX 请求?
http://jsfiddle.net/m7q3H/52/
小提琴代码 :
.HTML
<body>
<div id="toupdate">
<script type="text/javascript" charset="utf-8" src="http://static.polldaddy.com/p/6343621.js"></script>
</div>
</body>
jQuery
$(document).ready(function() {
console.log('HTML is '+$('#toupdate').html());
});
哦,
这里绝对没有问题。你可以从任何你想要的地方引用javascript文件。例如,Google CDN提供了常见的js文件,如jQuery,你可以使用:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
顺便说一下,这正是jQuery的JSONP实现的工作方式。它使用 javascript 将 <script>
标签动态注入到 DOM 指向某个远程服务器端脚本:
<script src="//remotedomain.com/script?callback=abc"></script>
此远程脚本使用 Content-Type: 'application/x-javascript'
响应标头和以下正文进行响应:
abc({"foo":"bar"})
在您的域上,您只需定义abc
函数:
<script type="text/javascript">
function abc(data) {
alert(data.foo);
}
</script>
然后你去:跨域AJAX的模拟(我说模拟是因为它不使用本机XHR对象,但它达到了相同的效果)。
现在你可以理解为什么 jQuery 的 JSONP 实现仅限于 GET 请求 => 因为当你注入脚本标签时,浏览器只向其 src
属性发送一个 GET 请求。
是的。 您可以使用script
标签从其他域加载脚本,但不能使用 XmlHTTPRequest
对象(AJAX 请求)发出跨域请求。
只要
您的外部.js加载了
<script>
标记 同源策略将其视为您信任的安全 JS。
相关文章:
- 同源策略目的|用户数据与基本页面数据|客户端页面抓取
- 在同一主机上对PHP文件使用XMLHTTP请求的Javascript违反了同源策略
- 禁用Mobile Safari中的同源策略
- 绕过同源策略,从跨域iframe中获取页面的顶部URL
- 为什么这个 JavaScript 调用没有打破“同源策略”
- 移动应用上的同源策略
- 使用Ajax使用REST服务-同源策略
- 如果使用JSONP来解决同源策略,则可以'它不能用于XSS漏洞利用
- YUI富文本编辑器和Chrome中的同源策略
- 如果所有浏览器都使用同源策略,CSRF 攻击如何工作?
- 为什么此 URL 不受同源策略约束
- 这种“ajax 上传器”方法如何绕过同源策略
- 创建映射时出现同源策略错误
- 同源策略局域网
- XMLHttpRequest 同源策略
- 浏览器实现同源策略的方式是否存在实质性差异
- 同源策略规范
- JavaScript 中的同源策略
- 从另一个域的 iframe 中的代理访问父/原始 URL(同源策略)
- 如果您无法控制第二个来源,是否可以规避同源策略