跨域脚本标记在FF和Chrome中工作但不在IE中

时间:2010-08-24 15:52:41

标签: javascript cross-browser cross-domain same-origin-policy

我们正在提供一个HTML的snippit,我们的客户可以将其嵌入到他们的网站上以回调我们的API。此HTML是一个简单的表单和托管在我们服务器上的Javascript文件。

这是客户在其网站(clientsite.com)上托管的内容:

<script type="text/javascript" src="http://mysite.com/webcallback/callback_script.js"></script> 
<form onsubmit="makeCallback();return false;">
<input id="myInput" type="text" />
<input type="submit" value="Go" />
</form>

调用makeCallback时,mysite.com上托管的脚本执行以下操作:

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://mysite.com/api/callback.php");
xhr.send();

请注意,脚本的域和XHR请求的域是相同的,但承载表单和脚本标记的HTML位于clientsite.com上。

这在FF和Chrome中运行良好,但在IE中我收到拒绝访问错误。我想它与同源策略有关,但我试图理解为什么这适用于FF和Chrome而不是IE。有没有办法让它在IE中工作?

由于

1 个答案:

答案 0 :(得分:1)

包含的脚本在包含它的页面范围内执行,而不是在它自己的范围内。因此,您的代码正在从其他域请求。

允许此请求的浏览器具有更宽松的跨域限制版本。