![](/img/trans.png)
[英]Why is same-origin-policy blocking this javascript call on a local domain?
[英]Why doesn't this JavaScript call break the “same origin policy”
我正在使用jQuery显示外部JavaScript文件。 原因是“同源策略”没有被破坏,因为它不是AJAX请求吗?
小提琴代码:
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.