javascript - 跨域脚本标签适用于 FF 和 Chrome,但不适用于 IE

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

我们提供了一个 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 - 跨域脚本标签适用于 FF 和 Chrome,但不适用于 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558350/

相关文章:

php - Javascript 字符串小写以匹配数据库字段

javascript - amCharts 中标签的点击事件

javascript - 视觉 : convention for conditional props in dynamic components?

javascript - oncontextmenu 是跨浏览器的吗?

javascript - 将事件监听器附加到与当前域不同的域

javascript - snackbar 验证 MDL - Javascript/Jquery

windows - 从 FireFox 或命令行安装 CAB 文件

html - 帮助页脚始终位于底部

javascript - 非常简单的 JSON-P 示例的问题

javascript - 我的 Web 小部件是否必须使用 HTTPS 协议(protocol)?