我们提供了一个 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/