我有一个本地网络服务器在端口 4444 上运行。 该网络服务器提供 html 页面和其他文件,一切正常。但是,当我尝试从服务器获取 JSON 数据时,我遇到超时,并在 Javascript 控制台中出现错误 ERR_EMPTY_RESPONSE。如果我将 JSON 作为页面加载,它会正确显示。
我使用 Chrome 和 Firefox 进行了测试。除了 Chrome 中的超时和 ERR_EMPTY_RESPONSE 之外,两者都不会显示任何错误。
- 可能是 JSON 格式错误。
- 可能存在另一个与域相关的问题(我认为是因为我在本地托管)。
- 或者我的 HTTP header 错误。
这是我的 JSON 数据。
[
{
"x": "286.610989010989",
"y": "43.716483516483514",
"r": "103.5956043956044",
"g": "127.81208791208792",
"b": "143.07472527472527"
},
{
"x": "286.610989010989",
"y": "43.716483516483514",
"r": "103.5956043956044",
"g": "127.81208791208792",
"b": "143.07472527472527"
},
]
这是我的 ajax 调用。我还尝试设置内容类型。
function getData() {
$.ajax({
url: "/data",
type: "json",
timeout: 3000,
success: actData,
complete: getData,
error: function(xhr, status, error) {
console.log(error);
}
});
}
这些是我的 HTTP header 。我尝试将内容类型设置为 application/json 和 text/html。
os.print("HTTP/1.0 200" + "\r\n");
os.print("Content-Type: text/plain" + "\r\n");
os.print("Content-Length: " + data.length() + "\r\n");
os.print("\r\n");
os.write(data);
最佳答案
我发现了问题所在,而且比我想象的要愚蠢。我过滤了我的请求,只允许 POST 和 GET,因为我认为过滤输入是好的行为。然而,JSON 请求实际上使用 JSON 而不是 GET 发送 header 。于是就被过滤掉了。因此,我实际上可以在浏览器中看到它,但不能将其作为 JSON 检索(因为这样它会发送 JSON header )。
关于javascript - JQuery JSON 调用返回 ERR_EMPTY_RESPONSE 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360491/