无法加载资源:net::ERR_INSECURE_RESPONSE

Failed to load resource: net::ERR_INSECURE_RESPONSE

提问人:user3594437 提问时间:5/16/2014 最后编辑:Philip Kirkbrideuser3594437 更新时间:8/3/2017 访问量:345303

问:

有没有办法欺骗服务器,这样我就不会收到这个错误:

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

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

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

iframe SSL 证书 chromium 自签名

评论

0赞 Fyona 5/16/2014
听起来您正在尝试从安全资源访问不安全的资源。我相信他们在这里也有类似的问题。

答:

303赞 Rémi Becheras 8/1/2014 #1

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

您可以通过以下方式绕过此操作:

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

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

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

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

评论

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

有时 Google Chrome 会抛出此错误,即使它不应该。 当 Chrome 有新版本时,我遇到了它,它需要重新启动。 重新启动后,同一页面工作没有任何错误。 控制台中的错误是:

net::ERR_INSECURE_RESPONSE

评论

8赞 Oran Dennison 8/28/2015
确认,重新启动 Chrome(并杀死所有后台 Chrome 进程)为我修复了它。
5赞 user1735921 9/16/2015
不起作用。.这是一个自签名证书。重新启动将不起作用
1赞 nemke 11/13/2015
也和我确认了!
0赞 Pacerier 1/21/2016
@Balazs,重启浏览器是唯一的方法吗?假设我们负担不起重新启动的费用,有没有办法通过?chrome://net-internals
1赞 EnocNRoll - AnandaGopal Pardue 1/30/2016
重新启动 Chrome(没有后台进程)也为我修复了它。谢谢!
4赞 Jim G. 8/6/2015 #3

如果您正在开发,并且您正在使用 Windows 计算机进行开发,只需添加为受信任的站点即可。localhost

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

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

评论

4赞 user1735921 9/16/2015
我使用的是 linux ubuntu,而不是 windows,有什么解决方案吗?
0赞 JJ Stiff 1/11/2016 #4

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

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

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

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

注意:您可能希望更改 中的函数,以便与您的 UI: 进行最佳集成,而不是调用 .setTimeoutalert()

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赞 Sebastiaan Ordelman 4/9/2016 #5

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

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

评论

0赞 DEls 4/6/2017
我在运行 Windows 8 的华硕 zenbook 上遇到了类似的错误。不幸的是,这对我不起作用,但你能更详细地解释一下你是如何重置日期/时间的吗?只需通过 Windows UI 设置时区?
0赞 Sebastiaan Ordelman 4/7/2017
@DEls,我在 Windows 配置中切换了时区 - 这为我重置了系统时钟。之后是否重新启动了浏览器?如果计时不能解决问题,则可能需要查看本主题中描述的其他解决方案。
0赞 deanwilliammills 6/4/2018
我不知道为什么,但这对我有用。年份设置为 2048 年,将其更改为当前年份并全部固定。谢谢@SebastiaanOrdelman
6赞 Liam George Betsworth 4/27/2017 #6

为此错误提供另一种潜在的解决方案。

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

例如:

https://example.com/api/etc

而不是

https://123.4.5.6/api/etc

就我而言,我使用证书对安全服务器进行 API 调用,但使用 IP 而不是域名。这抛出了一个.Failed to load resource: net::ERR_INSECURE_RESPONSE

0赞 Sachin from Pune 6/2/2017 #7

此问题是因为您的https意味着SSL认证。在 localhost 上尝试。

6赞 Ramin Ahmadi 8/3/2017 #8

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