我正在为客户开发应用程序,该客户端将拥有SSL证书并在https下提供服务。但是,要与现有网站集成,他们希望在iframe中提供导航。
我可以看到这会带来麻烦,因为我希望浏览器会抱怨页面上安全和不安全内容的混合。我在这里看过类似的问题,他们似乎都反过来引用了这一点(iframe中的安全内容)。
我想知道的是:它会导致问题,将不安全的内容包含在iframe中,放在安全页面上,如果是这样,它们会出现什么样的问题?
理想情况下,如果这不是一个好主意(并且我有强烈的感觉,它不是)我需要能够向客户解释这一点。
答案 0 :(得分:41)
如果您的网页是http,那么它允许iframe使用https内容。
但如果您的网页是https,那么它不允许使用http内容。
让我们放下以下可能性。
page - iframe - status
http - http - allowed
http - https - allowed
https- http - not allowed
https- https - allowed
答案 1 :(得分:26)
如果使用https://www.example.com/main/index.jsp
(SSL)访问您的页面,那么如果HTML代码中有任何资源引用{{1},则您的浏览器会抱怨“此页面包含安全和不安全的项目” (非SSL)。这包括iframe。
如果您的导航页面托管在同一台服务器上,那么您可以使用这样的相对URL来阻止“不安全内容”消息......
http://
从您的问题来看,您的导航页面似乎是从一个单独的主机提供的,而您却被迫使用类似的东西
<iframe src="/app/navigation.jsp" />
这当然会在您的浏览器中导致“不安全的内容”消息。
您唯一的解决方案是
在包含导航页面的服务器上实施SSL,以便您可以使用<iframe src="http://otherserver.example.com/app/navigation.jsp" />
作为iframe参考,或
将导航应用程序移动到同一服务器,以便您可以使用相对URL。
我个人无法理解为什么你的导航会出现在另一台主机上,因为那时你会遇到JavaScript跨域脚本问题(除非涉及一些时髦的JSONP)。
答案 2 :(得分:-4)
尝试删除src属性值中的http:字符,如下所示:
<iframe src="//example.com/thefile.htm"></iframe>
这当然是一种解决方法,安全很重要,所以不要轻易绕过,但无论如何这一次让我遇到了类似的问题。