无法在 Chrome 或 Edge 上的 iframe 中显示 Web 应用程序

Cannot Display Web Application in iframe On Chrome or Edge

我正在努力将一个非常旧的 Web 应用程序添加到站点。我们必须在站点的 iframe 中显示 Web 应用程序。使用 Internet Explorer 11 时,Web 应用程序将毫无问题地显示在 iframe 中。应该注意的是,这是一个旧的网络应用程序

另一方面,

Chrome 和 Edge 将在开发者控制台中显示错误:Refused to display '{APPLICATION_URL}' in a frame because an ancestor violates以下内容安全策略指令:"frame-ancestors {SERVER_NAME}".

需要注意的一件事是,在 Chrome 和 Edge 中, 不会总是发生这种情况。我会说大约 80% 的时间我会收到错误,但 20% 的时间应用程序将在 iframe 中正常加载并且没有问题。这让我觉得这个问题可能是我们农场的一组服务器特有的,但我无法证明这一点。

我在这里对我们的服务器的了解非常有限,但如果需要,我可以让其他人为我提供更多信息。

我找到了解决方案。需要注意的一件事:Internet Explorer 不支持 Content-Security-Policy header。这就是为什么这在 IE 中 100% 有效的原因。 IE 无法对该 header 执行任何操作,因此它只是按照预期的方式加载应用程序。

我能够与一些有权访问托管 Web 应用程序的服务器的人一起工作。我发现问题是由 IIS 设置引起的,该默认站点是该服务器上的应用程序所属的默认站点。

有两台服务器托管应用程序,负载平衡器会根据流量将您定向到服务器。 一个 服务器为服务器上应用程序的所有出站流量添加了内容安全策略的 HTTP header。这解释了为什么有时应用程序可以正常加载,有时却会失败。