如何在Google Chrome扩展程序中处理ERR_INSECURE_RESPONSE

Krz*_*lny 11 https google-chrome ssl-certificate google-chrome-extension

我正在对我的URL做简单的GET请求,我收到错误"ERR_INSECURE_RESPONSE".这很好,因为证书是自签名的.但我有两个问题:

  1. 有没有办法在扩展中克服这个问题?就像在请求中设置一个标志或者像那样?(可能不太可能)
  2. 有没有办法处理这个错误(通知用户)?我检查了所有XMLHttpRequest字段,看不到任何可以指示此错误的内容.状态字段的值为0(零).

有任何想法吗?

Rob*_*b W 9

  1. 不,扩展API不提供任何修改SSL设置或行为的方法.
  2. 您可以使用该chrome.webRequest.onErrorOccurred事件来获取网络错误的通知.该error属性将包含网络错误代码.

例如:

chrome.webRequest.onErrorOccurred.addListener(function(details) {
    if (details.error == 'net::ERR_INSECURE_RESPONSE') {
        console.log('Insecure request detected', details);
    }
}, {
    urls: ['*://*/*'],
    types: ['xmlhttprequest']
});
var x = new XMLHttpRequest;
x.open('get','https://example.com');
x.send();
Run Code Online (Sandbox Code Playgroud)

如果仅用于测试,只需使用--ignore-certificate-errors标志启动Chrome 即可使用自签名证书.这会影响同一浏览会话中的所有网站,因此我建议通过附加--user-data-dir=/tmp/temporaryprofiledirectory到命令行参数来为此目的使用单独的配置文件目录.

首先避免错误的另一种方法是获得有效的SSL证书.对于非提供商业目的,你可以得到一个免费的SSL证书https://www.startssl.com.