IE11:Web请求无法在沙盒iframe中运行

问题描述 投票:0回答:1

我正在尝试用JavaScript从HTTP GET内部向rest API发出iframe请求。iframe被沙盒化,但是它设置了allow-scripts属性,并且我正在调用的API已启用以允许所有来源,因此CORS应该不会成为问题。

我已经在这里用最少的代码示例重新创建了方案:http://plnkr.co/edit/jrchvxFXQQDqs2Fv

如果您转到该页面并使用任何现代浏览器(Chrome,Edge等)预览页面,它将正常工作。

但是如果您使用Internet Explorer 11执行此操作,则呼叫将失败。在javascript控制台上,我们收到此通用网络错误:

enter image description here

但是奇怪的是:该呼叫实际上正在正确运行。实际上,如果我们检查“网络”标签,就可以看到它正在执行并重新设置200:enter image description here

我在这里做错什么了吗,或者这只是普通的IE就是IE?

javascript iframe internet-explorer-11
1个回答
0
投票

我发现我们需要添加allow-same-origin才能使其在IE中运行。

默认情况下,sandbox对iframe强制实施“不同来源”策略。换句话说,它使浏览器将iframe视为来自其他来源,即使其src指向同一站点也是如此。 allow-same-origin删除此功能。因此,我认为它一开始在IE中失败,因为它不符合same-origin policy

关于IE和其他浏览器之间的差异,我认为这是由于不同浏览器中的策略设计不同所致。

我也找到有关此问题的a thread,并且有一些有用的信息,您也可以参考它以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.