我们都熟悉页面上混合方案(http / https)内容的问题。
我正在开发一个不可避免的网站。我不想阻止此。我知道有很多问题/答案。
我需要的只是检测这个(通过JavaScript?)所以我可以调整页面行为(显示降级行为的通知或其他内容)。有什么帮助吗?
答案 0 :(得分:4)
使用jQuery,您可以使用以下代码找出页面上是否存在任何不安全的项目:
var flag = false;
if($("script[src^='http:']").length > 0
|| $("link[type='text/css'][href^='http:']").length > 0
|| $("img[src^='http:']").length > 0
|| $("iframe[src^=http:]").length > 0)
flag = true; // insecure content :(
else
// yay!
图像,JS,CSS是我能想到的所有不安全的内容。也许还有更多,但你可以很容易地添加你的发现。
答案 1 :(得分:3)
这很hacky,但我设法用JavaScript来解决所有浏览器中的问题。让我看看我是否可以勾勒出来。
我们有这个基本的加密页面:
<html>
<body>
<div> stuff </div>
<iframe src="URL_WHICH_IS_MAYBE_INSECURE"></iframe>
</body>
</html>
当URL_WHICH_IS_MAYBE_INSECURE
为https时,一切都很好。但是当URL_WHICH_IS_MAYBE_INSECURE
为http时,IE将不加载内容,除非用户确定不安全/混合内容。我想告诉用户页面有点被破坏,直到他们点击允许。由于我无法进入的原因,我知道所有网站都值得信赖。其中一些不支持SSL,父站点需要。
AFAIK,我无法用JS检测到这个对话框/半加载状态。但我能做的就是在他们允许的情况下在不安全的连接上运行JS(这也使iframe成为可能)。当URL_WHICH_IS_MAYBE_INSECURE
是http&amp;时,仅该网站是https(混合)我添加了两位代码+ HTML。
<html>
<body>
<div> stuff </div>
@if(needSpecialHandlingForMixedMode) {
<div id="secureWarn">
WARNING: This page has limited functionality, allow mixed content
</div>
}
<iframe src="URL_WHICH_IS_MAYBE_INSECURE"></iframe>
</body>
@if (needSpecialHandlingForMixedMode)
{
string baseUrl = Request.Url.SchemeAndHostAndPort().Replace("https", "http");
<script src="@baseUrl/scripts/security-warning.js"></script>
}
</html>
,脚本是
$(document).ready(function(e) {
$("#secureWarn").remove();
});
所以它就像这样。
希望这有助于某人。
干杯, 迈克尔