Что это за странный символ в моем результате Ajax

#php #ajax #perl

#php #ajax #perl

Вопрос:

Что это за странные символы в моем результате Ajax 138d в начале и 0 в конце моего результата ajax. как это отключить?

 138d


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

Ответ №1:

Ваш 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-ответа, неправильно вернуло все еще фрагментированное тело сообщения. Это ошибка. Цитата RFC2616,

Все приложения HTTP / 1.1 ДОЛЖНЫ иметь возможность получать и декодировать «фрагментированное» кодирование передачи

Комментарии:

1. Большое спасибо ikegami. Я попытался отключить gzip на моем сервере apache, тогда он исправлен. спасибо за помощь.