无法加载资源:net :: ERR_INSECURE_RESPONSE

时间:2014-05-15 21:03:06

标签: iframe ssl-certificate chromium self-signed

有没有办法欺骗服务器,所以我没有收到这个错误:

内容已被屏蔽,因为它未由有效的安全证书签名。

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

内容已被屏蔽,因为它未由有效的安全证书签名。

8 个答案:

答案 0 :(得分:300)

您的资源可能使用HTTPS协议上的自签名SSL证书。 Chromium,所以Google Chrome默认阻止这种资源被认为是不安全的。

你可以这样绕过这个:

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

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

您可以注意到Chrome会阻止您的每个导航会话的网址,而Chrome可以永远记住您信任此域名。

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

答案 1 :(得分:33)

有时谷歌Chrome会抛出此错误,即使它不应该。 我在Chrome有新版本时体验过它,需要重新启动它。 重新启动相同的页面后,没有任何错误。 控制台中的错误是:

net::ERR_INSECURE_RESPONSE

答案 2 :(得分:8)

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

解决方案位于设备的日期/时间设置;某种程度上,日期设置不正确(过去的日期)。通过设置正确的日期(并重新启动浏览器)来恢复此问题解决了我的问题。我希望我能帮助别人解决这个问题。

答案 3 :(得分:5)

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

答案 4 :(得分:4)

如果您正在开发,并且使用Windows计算机进行开发,只需添加localhost as a Trusted Site

是的,根据DarrylGriffiths'评论,虽然它可能看起来像你正在添加Internet Explorer设置......

  

我认为这些是Windows而不是IE设置。虽然MS倾向于认为他们只是IE(因此警告旁边的#34;启用保护模式"它需要重新启动IE)......

答案 5 :(得分:4)

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

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

<强> e.g。

https://example.com/api/etc

而非

https://123.4.5.6/api/etc

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

答案 6 :(得分:0)

尝试使用此代码来监听并报告可能的net::ERR_INSECURE_RESPONSE

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

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

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

注意:您可能希望更改setTimeout中的功能,以便与您的用户界面最佳集成:而不是调用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);
}

答案 7 :(得分:0)

此问题是因为您的https意味着SSL认证。试试Localhost。