【问题标题】:IE7 and 8 gives mixed content warning when page is load with JQuery.load使用 JQuery.load 加载页面时,IE7 和 8 会给出混合内容警告
【发布时间】:2012-01-17 00:03:52
【问题描述】:
我有一个以两种不同方式加载的网页;用户可以单击其链接,它将在同一浏览器窗口中加载该页面;否则,可以在 JQuery 对话框中查看同一页面,而该页面的内容区域仅显示在弹出窗口中。当此页面在主浏览器窗口中加载时,它在所有浏览器(所有版本)中都可以正常工作,但是当我在弹出窗口中加载它时,它仅在 IE7 和 IE8 中给出混合内容警告。
我花了一整天的时间寻找它的根本原因,但没有成功。我已经尝试了以下帖子中建议的所有修复:
- 所有链接要么是相对的,要么在 url 中明确包含 https:。
- 对于浏览器下载的任何资源,我没有任何 404 消息。
- 我查看了 Fiddler treffic,所有请求都是 https。
-
<script> 标签中没有src="javascript:" 属性。
- 我不会删除任何直接在 style 属性中定义 background-image:url 样式的 div。
如您所见,我已经尝试了所有在线可用的建议/修复,但没有运气。我非常感谢这方面的帮助。
谢谢,
导航
【问题讨论】:
标签:
jquery
internet-explorer-8
https
internet-explorer-7
load
【解决方案1】:
我花了很长时间研究我自己的版本。最终帮助我找到答案的是在 IE8 模式下使用 IE10 - 这给出了一个实际的特定错误。如果您有类似的问题,我强烈建议您这样做,并且 Fiddler 或 HttpWatch 向您保证您实际上并未加载任何 HTTP。
对我来说问题出在将样式表链接附加到头部的脚本上:
$("head").append('<link href="//example.com/stylesheets/icons" media="screen" rel="stylesheet" type="text/css" />');
IE8 通常可以很好地处理协议相关的 URL,但在这种情况下显然不是。我必须提供一个明确的协议:
$("head").append('<link href="'+window.location.protocol+'//example.com/stylesheets/icons" media="screen" rel="stylesheet" type="text/css" />');
丑陋但实用。希望这可以避免一些人头疼!
【解决方案2】:
我终于能够解决这个问题,并在此处发布解决方案,供任何在网络上四处寻找根本原因的可怜人使用。在我的情况下,这是由于在 3 个不同的标签(例如)上使用了无效的“背景”属性引起的,出于某种原因,IE7 和 IE8 仅在将这些页面加载到 jquery 对话框中时才发出混合内容警告。如果在浏览器中直接加载相同的页面,则没有警告。所以我仍然不知道为什么会这样。可能一些专家可以解释为什么它会这样。
感谢大家的回复。
【解决方案3】:
常见的罪魁祸首包括 CSS、iframe URL 和脚本 URL 引用的图像。
你说你在 Fiddler 中没有看到 HTTP 请求;但也许那是因为它目前正在阻止非安全资源。告诉您的浏览器获取所有非安全资源,然后观看 Fiddler。