Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';这个JavaScript调用是否会中断;“同一原产地政策”;_Javascript_Jquery_Same Origin Policy - Fatal编程技术网

为什么';这个JavaScript调用是否会中断;“同一原产地政策”;

为什么';这个JavaScript调用是否会中断;“同一原产地政策”;,javascript,jquery,same-origin-policy,Javascript,Jquery,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>

我正在使用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>​

哦,这里绝对没问题。您可以从任何地方引用javascript文件。例如,Google CDN提供了常见的js文件,如jQuery,您可以使用:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
在您的域中,您只需定义
abc
函数:

<script type="text/javascript">
    function abc(data) {
        alert(data.foo);
    }
</script>

职能abc(数据){
警报(data.foo);
}
接下来就是:一个跨域AJAX的模拟(我说模拟是因为它没有使用本机XHR对象,但它实现了相同的效果)


现在您可以理解为什么jQuery的JSONP实现仅限于GET请求=>了,因为当您注入脚本标记时,浏览器只向其
src
属性发送GET请求。

是。您可以使用
script
标记从其他域加载脚本,但不能使用
XmlHTTPRequest
对象(AJAX请求)进行跨域请求。

只要外部.js加载了


标记同源策略认为它是您信任的安全js。

这就是JSON-p工作和存在的原因。这是模型使用的规避。这是否意味着它仅限于json。不允许返回其他类型的文件,如.js?不允许,
标记要求您返回有效的javascript文件。任何.js文件都可以。但是响应体包含json,它不能是任何其他类型的?您是在谈论我的示例,还是返回简单json的脚本:
{foo:“bar”}
?如果返回无效的javascript,例如
{“foo”:“bar”}
,当浏览器试图执行它时,显然会出现javascript错误。@user470184虽然不允许直接执行,但发送包含字符串化版本(例如html或xml)的变量的javascript并对其进行解码并非不可能。例如,您可以这样做:
$('body')。附加(“”)
同源策略只关心XHR
<script src="//remotedomain.com/script?callback=abc"></script>
abc({"foo":"bar"})
<script type="text/javascript">
    function abc(data) {
        alert(data.foo);
    }
</script>