加载资源失败:net::ERR_INSECURE_RESPONSE

Posted

技术标签:

【中文标题】加载资源失败:net::ERR_INSECURE_RESPONSE【英文标题】:Failed to load resource: net::ERR_INSECURE_RESPONSE 【发布时间】:2014-07-04 12:14:49 【问题描述】:

有没有办法欺骗服务器,所以我不会收到此错误:

内容被阻止,因为它没有由有效的安全证书签名。

我正在将一个 html 网站的 iframe 拉入另一个网站,但我在这个问题的标题中不断收到控制台 (chrome) 错误,并且在 Internet Explorer 中显示:

内容被阻止,因为它没有由有效的安全证书签名。

【问题讨论】:

听起来您正试图从安全资源中访问不安全的资源。我相信他们也有类似的问题here。 【参考方案1】:

您的资源可能使用通过 HTTPS 协议的自签名 SSL 证书。 Chromium,因此谷歌浏览器默认阻止这种被认为不安全的资源。

你可以这样绕过:

假设您的框架的 URL 是 https://www.domain.com,请在 chrome 中打开一个新选项卡并转到 https://www.domain.com。 Chrome 会要求您接受 SSL 证书。接受它。 然后,如果您使用框架重新加载页面,您会看到它现在可以工作了

您可以猜到的问题是,您网站的每个访问者都必须执行此任务才能访问您的框架。

您会注意到,chrome 会在每个导航会话中阻止您的 URL,而 chrome 可以永远记住您信任此域。

如果你的框架可以通过HTTP而不是HTTPS访问,我建议你使用它,这样就可以解决这个问题了。

【讨论】:

我认为当您打开另一个选项卡时,您需要转到 https://domain.com 并接受 SSL 证书。 @RémiBecheras,有没有办法让 Chrome 记住在多个导航会话中信任证书? 为了添加这样的规则,您必须获得证书。如果它是你的,你已经拥有了。如果没有,请单击地址栏上的 https 左侧图标 > 证书信息 > 详细信息 > 导出。然后,使用这个文件 这也适用于奇怪的情况,即网站向同一个域(本身)发送请求,我刚刚批准继续通过自签名证书,但随后 Chrome 抛出此错误。 有没有办法通过客户端代码进行这种绕过?意思是,我可以在客户端中编程“嘿,您尝试访问的这个服务器看起来很粗略,但没关系,相信我。我写给你们两个,从技术上讲,你们是代码兄弟/姐妹/性别中立的兄弟姐妹”?【参考方案2】:

有时谷歌浏览器会抛出这个错误,即使它不应该。 我在 Chrome 有新版本时遇到过,需要重新启动。 重新启动同一页面后,没有任何错误。 控制台中的错误是:

net::ERR_INSECURE_RESPONSE

【讨论】:

确认,重新启动 Chrome(并杀死所有后台 Chrome 进程)为我修复了它。 不起作用..它是一个自签名证书..重新启动它不会起作用 也和我确认了! @Balazs,重启浏览器是唯一的方法吗?假设我们无法重启,有没有办法通过chrome://net-internals 来做到这一点? Chrome 的重启(没有后台进程)也为我修复了它。谢谢!【参考方案3】:

我在华硕 T100 Windows 10 测试设备上仍然遇到了上述问题(最新的)Edge 和 Chrome 浏览器。

解决方案在设备的日期/时间设置中;不知何故,日期设置不正确(过去的日期)。通过设置正确的日期(并重新启动浏览器)来恢复它为我解决了这个问题。我希望我可以省去调试这个问题的麻烦。

【讨论】:

我在运行 Windows 8 的华硕 zenbook 上遇到了类似的错误。不幸的是,这对我不起作用,但您能更详细地解释一下您是如何重置日期/时间的吗?只需通过windows ui设置时区? @DEls,我在 Windows 配置中切换了时区 - 为我重置了系统时钟。之后你重启浏览器了吗?如果计时没有解决问题,您可能需要查看本主题中描述的其他解决方案。 我不知道为什么,但这对我有用。年份设置为 2048 年,将其更改为当前年份并全部固定。谢谢@SebastiaanOrdelman【参考方案4】:

打开您的控制台并点击里面的 URL。它会带您进入 API 页面,然后在页面中接受 SSL 证书,返回您的应用页面并重新加载。 请记住,之前应该已经为您的开发环境颁发了 SSL 证书。

【讨论】:

【参考方案5】:

为此错误提供另一种可能的解决方案。

如果您有一个对后端进行 API 调用的前端应用程序,请确保您引用了已颁发证书的域名。

例如

https://example.com/api/etc

而不是

https://123.4.5.6/api/etc

在我的例子中,我使用证书对安全服务器进行 API 调用,但使用的是 IP 而不是域名。这抛出了Failed to load resource: net::ERR_INSECURE_RESPONSE

【讨论】:

【参考方案6】:

如果您正在开发,并且您正在使用 Windows 机器进行开发,只需添加 localhostas a Trusted Site。

是的,根据 DarrylGriffiths 的评论,虽然看起来您正在添加 Internet Explorer 设置...

我相信这些是 Windows 而不是 IE 设置。虽然 MS 倾向于假设它们只是 IE(因此“启用保护模式”旁边的警报要求重新启动 IE)...

【讨论】:

我用的是linux ubuntu,不是windows,有什么解决办法吗?【参考方案7】:

尝试此代码以观察并报告可能的net::ERR_INSECURE_RESPONSE

我也遇到了这个问题,使用的是自签名证书,我选择不将其保存到 Chrome 设置中。访问 https 域并接受证书后,ajax 调用工作正常。但是一旦接受超时或在首次接受之前,jQuery.ajax() 调用就会静默失败:timeout 参数似乎没有帮助,error() 函数永远不会被调用。

因此,我的代码从未收到 success()error() 调用,因此挂起。我相信这是 jquery 处理这个错误的一个错误。我的解决方案是在指定超时后强制调用error()

此代码确实假定了 jQuery.ajax(url: required, success: optional, error: optional, others_ajax_params: optional) 形式的 jquery ajax 调用。

注意:您可能希望更改 setTimeout 中的函数以最好地与您的 UI 集成:而不是调用 alert()

const MS_FOR_HTTPS_FAILURE = 5000;
$.orig_ajax = $.ajax;
$.ajax = function(params)

  var complete = false;
  var success = params.success;
  var error = params.error;
  params.success = function() 
    if(!complete) 
      complete = true;
      if(success) success.apply(this,arguments);
    
  
  params.error = function() 
    if(!complete) 
      complete = true;
      if(error) error.apply(this,arguments);
    
  
  setTimeout(function() 
    if(!complete) 
      complete = true;
      alert("Please ensure your self-signed HTTPS certificate has been accepted. "
        + params.url);
      if(params.error)
        params.error( ,
          "Connection failure",
          "Timed out while waiting to connect to remote resource. " +
          "Possibly could not authenticate HTTPS certificate." );
    
  , MS_FOR_HTTPS_FAILURE);

  $.orig_ajax(params);

【讨论】:

【参考方案8】:

这个问题是因为你的 https 意味着 SSL 认证。尝试本地主机。

【讨论】:

以上是关于加载资源失败:net::ERR_INSECURE_RESPONSE的主要内容,如果未能解决你的问题,请参考以下文章

华为云空间电脑端加载资源文件失败

duilib加载资源文件失败 每次开机都会出现这个

win10运行中出现duilib加载资源失败。怎么解决

win10运行中出现duilib加载资源失败,又没啥影响,是啥原因啊~~

电脑开机出现duilib加载资源文件失败怎么解决

文档中的最后一张图片加载失败 - “加载资源失败”