无法加载资源:net :: ERR_INSECURE_RESPONSE


206

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

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

我正在将html网站的iframe拉入另一个网站,但在此问题的标题中以及在Internet Explorer中,我不断收到控制台(chrome)错误,内容为:

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


听起来您正在尝试从安全资源访问不安全的资源。我相信他们在这里也有类似的问题。
德里克

Answers:


301

您的资源可能使用基于HTTPS协议的自签名SSL证书。Chromium,因此Google Chrome在默认情况下会阻止这种不安全的资源。

您可以通过这种方式绕开:

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

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

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

如果您的框架可以通过HTTP而不是HTTPS进行访问,则建议您使用它,这样就可以解决此问题。


1
我认为当您打开另一个标签时,您需要转到https://domain.com并接受SSL证书。
Hozefa 2014年

2
@RémiBecheras,有什么方法可以让Chrome记住在多个导航会话中信任证书吗?
菲利克斯(Felix)

3
为了添加这样的规则,您必须获得证书。如果是您的,那么您已经拥有了。如果不是,请单击地址栏上的https左图标>证书信息>详细信息>导出。然后,使用此文件
雷米Becheras

1
这也适用于一个奇怪的情况,即网站向我刚刚批准继续通过自签名证书的同一域(本身)发送请求,但随后Chrome抛出此错误。
迈克尔

1
有没有办法通过客户端代码进行这种绕过?意思是,我可以在客户端中编程“嘿,您尝试访问的服务器看起来很粗略,但是可以相信我。我俩都给您写过,从技术上讲,您是兄弟/姐妹/性别中立的兄弟姐妹”吗?
discodane

33

有时Google Chrome会抛出此错误,即使不是这样。Chrome有了新版本时,我经历了它,因此需要重新启动它。重新启动后,同一页面正常工作,没有任何错误。控制台中的错误是:

net::ERR_INSECURE_RESPONSE

7
确认,重新启动Chrome(并杀死了所有后台Chrome进程)对我来说已经解决了。
奥兰·丹尼森

5
不起作用..它的自签名证书..通过重新启动将不起作用
user1735921 2015年

1
我也确认了!
nemke

@Balazs,重启浏览器是唯一的方法吗?假设我们负担不起重新启动的费用,是否有办法通过chrome://net-internals
和平者

1
重新启动Chrome(无后台进程)也为我修复了该问题。谢谢!
EnocNRoll-AnandaGopal Pardue

8

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

解决方法是在设备的日期/时间设置中;日期以某种方式未正确设置(过去的日期)。通过设置正确的日期(并重新启动浏览器)来恢复此设置,对我来说解决了这个问题。我希望我省去了调试该问题的麻烦。


我在运行Windows 8的华硕zenbook上遇到类似的错误。不幸的是,这对我不起作用,但是您能否更详细地说明如何重置日期/时间?只是通过Windows ui设置时区?
DEls

@DEls,我在Windows配置中切换了时区-为我重置了系统时钟。之后您是否重新启动了浏览器?如果计时不能解决问题,则可能必须研究本主题中描述的其他解决方案。
Sebastiaan Ordelman'4

我不知道为什么,但这对我有用。该年份设置为2048,将其更改为当前年份并全部固定。感谢@SebastiaanOrdelman
deanwilliammills

6

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


4

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

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

我相信这些是Windows而不是IE设置。虽然MS倾向于认为它们只是IE(因此“ Enable Protected Mode”旁边的警报要求重新启动IE)...


4
我正在使用linux ubuntu,而不是Windows,任何解决方案?
user1735921

4

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

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

例如

https://example.com/api/etc

并不是

https://123.4.5.6/api/etc

就我而言,我正在使用证书对安全服务器进行API调用,但是使用IP而不是域名。这引发了Failed to load resource: net::ERR_INSECURE_RESPONSE


0

尝试使用此代码来观察并报告可能的情况 net::ERR_INSECURE_RESPONSE

使用自签名证书时,我也遇到了这个问题,我选择不保存到Chrome设置中。访问https域并接受证书后,ajax调用可以正常工作。但是,一旦接受超时或在第一次接受之前,jQuery.ajax()调用将以静默方式失败:该timeout参数似乎无济于事,并且error()永远不会调用该函数。

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

这段代码确实假定了表单的jquery ajax调用jQuery.ajax({url: required, success: optional, error: optional, others_ajax_params: optional})

注意:您可能需要更改内的功能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);
}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.