我有一个简单的Web应用程序,它在后台发送XMLHttpRequest以更新站点,我在将应用程序从HTTP转换为HTTPS时遇到问题。
应用程序正常运行,所有内容(网页和XMLHttpRequests)通过HTTP,但在切换Web服务器以通过HTTPS服务网站并仅通过HTTPS提供请求并更新XMLHttpRequest URL后,请求失败。
在https://localhost:443
的应用程序中运行的以下JavaScript将返回net::ERR_CONNECTION_CLOSED
错误
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://localhost:8080/?id=2");
xhr.send(data);
从同一设备运行以下cURL命令时,将返回OK数据
curl -X GET \'https://localhost:8080/?id=2' -k
侦听localhost:8080
的服务器在Java中作为com.sun.net.httpsserver.HttpsServer
对象运行,并包含响应头Access-Control-Allow-Origin: *
。该网页使用Apache提供,其中包含来自Let's Encrypt Authority的证书。
我错过了什么?