在我的Ajax结果中,这个奇怪的字符是什么



在我的Ajax结果上,这些奇怪的字符是什么?在我的Ajax结果的开头是138d,结尾是0。如何禁用此功能?

138d

{"feeds":[{"pubdate":"Sun, 28 Nov 2021 23:00:00 EST"]}
0

您的HTTP客户端有缺陷。它不正确地从HTTP响应中提取了正文。


有三种方式可以发出HTTP响应结束的信号:

  • 使用Content-Length标头
  • 使用chunked传输编码
  • 关闭插座

前两种方法允许在同一连接上进行多个请求-响应交换,这比为每个请求创建新连接效率高得多。(尤其是HTTPS。(

Content-Length报头使用起来很简单,但在开始发送消息之前需要知道消息体的大小。chunked传输编码没有这个限制。它允许服务器在其大小已知之前开始发送响应。

使用分块传输编码的HTTP响应可能如下所示:

HTTP/1.1 200 OK␍␊
Transfer-Encoding: chunked␍␊
Content-Type: application/json␍␊
␍␊
28␍␊
..............................␍␊
28␍␊
..............................␊␍␊
0␍␊

该响应的消息体是

............................................................␊

返回JSON的响应显然使用了chunked传输编码。无论你用什么来解析HTTP响应,都会错误地返回仍然分块的消息体。这是一个bug。报价RFC2616,

所有HTTP/1.1应用程序都必须能够接收和解码"分块的";转移编码

最新更新