我做了很多研究,但是没有办法解决这个问题。我正在尝试执行一个 jQuery ajax 调用,从 https 服务器到一个本地主机 https 服务器,这个本地主机使用一个自定义的自签名证书运行 jetty。我的问题是,我无法确定响应是拒绝连接还是不安全响应(由于缺乏证书接受)。有没有办法确定这两种情况之间的区别?responseText
和 statusCode
在这两种情况下总是相同的,即使在铬控制台我可以看到一个区别:
net::ERR_INSECURE_RESPONSE
net::ERR_CONNECTION_REFUSED
responseText
is always "" and statusCode
is always "0" for both cases.
我的问题是,如何确定 jQuery ajax 调用是由于 ERR_INSECURE_RESPONSE
还是由于 ERR_CONNECTION_REFUSED
而失败?
一旦证书被接受,一切都正常,但是我想知道本地主机服务器是关闭了,还是已经启动并运行了,但是证书还没有被接受。
$.ajax({
type: 'GET',
url: "https://localhost/custom/server/",
dataType: "json",
async: true,
success: function (response) {
//do something
},
error: function (xhr, textStatus, errorThrown) {
console.log(xhr, textStatus, errorThrown); //always the same for refused and insecure responses.
}
});
即使手动执行请求,我也会得到同样的结果:
var request = new XMLHttpRequest();
request.open('GET', "https://localhost/custom/server/", true);
request.onload = function () {
console.log(request.responseText);
};
request.onerror = function () {
console.log(request.responseText);
};
request.send();