【问题标题】:Cross domain script tag working in FF and Chrome but not IE跨域脚本标签在 FF 和 Chrome 中工作,但在 IE 中不工作
【发布时间】:2011-04-03 06:26:33
【问题描述】:

我们提供了一个 HTML 片段,我们的客户可以将其嵌入到他们的网站上,以回调我们的 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 中工作?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多