gpt4 book ai didi

javascript - Firefox 正在解析空响应负载

转载 作者:可可西里 更新时间:2023-11-01 02:11:30 26 4
gpt4 key购买 nike

我们正在使用以下 header 发出 XHR 请求(我做了一些简化):

POST http://localhost:9001/login

Host: localhost:9001
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=utf-8
Content-Length: 67

然后我们的服务器像这样响应(再次简化):

Status code: 200 OK

Cache-Control: no-cache, no-store
Connection: close
Content-Length: 0
Date: Mon, 27 Feb 2017 17:19:53 GMT
Server: WildFly/9
Set-Cookie: JSESSIONID=123; path=/

响应中没有负载。注意 Content-Length: 0。但是 Firefox 仍然尝试将其解析为 XML。并向控制台输出以下错误:

XML Parsing Error: no root element found 
Location: http://localhost:9001/login
Line Number 1, Column 1

请注意,服务器不会发送 content-type header 。并根据RFC 7231它只需要在有实际内容时发送一个 content-type header 。

这是 Firefox 中的错误还是我的研究有误?

自己复制

我已经编写了一个小型服务器和客户端来重现该问题。

server.js(以node ./server.js开头):

const fs = require('fs'), http = require('http');
const server = http.createServer(function (request, response) {
if (request.method === 'POST') {
// send empty response
response.end();
return;
}

// send file content
fs.readFile('.' + request.url, function (error, content) {
response.writeHead(200, { 'Content-Type': request.url === '/index.html' ? 'text/html' : 'text/javascript' });
response.end(content);
});
}).listen(8080);

index.html

<script src="client.js"></script>

client.js

var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:8080/login');
xhr.send();

打开网址时http://localhost:8080/index.html在 Firefox 中,JavaScript 控制台会出现错误。

Firefox 版本 51.0.1

最佳答案

There's no payload in the response. Note the Content-Length: 0

这意味着有一个有效载荷,并且该有效载荷的大小为 0 字节。考虑 null"" 作为字符串的区别。当您想要 null 的等效项时,此处的等效项是 ""

将状态代码设置为 204 而不是 200 以指示您没有发送实体(并删除内容类型,因为没有内容类型没有实体)。

(很长一段时间,Firefox 仍会针对这种情况记录错误,但幸运的是,这最终得到了修复。即使它确实记录了错误,它仍会继续正确运行任何脚本)。

关于javascript - Firefox 正在解析空响应负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42492069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com