Как XMLHttpRequest знает, когда вызывать его обратный вызов? - PullRequest
1 голос
/ 25 июня 2009

Из того, что я понимаю, если код JavaScript на стороне клиента использует XMLHttpRequest для выполнения запроса POST, он ожидает ответа, а после завершения меняет свое состояние готовности на ReadyState.Complete и вызывает функцию обратного вызова.

Мой вопрос: как он определяет, что ответ завершен? Возвращает ли он содержимое первого полученного TCP-пакета? Или сервер закрывает соединение tcp и завершает транзакцию? Или в содержимом пакета TCP есть что-то особенное, что сообщает объекту XMLHttpRequest, что ответ завершен?

Ответы [ 2 ]

2 голосов
/ 25 июня 2009

Это соответствует спецификации HTTP. Ответ должен содержать либо Content-Length, либо использовать chunked кодировку содержимого. В HTTP / 1.0 закрытие соединения тоже возможно.

2 голосов
/ 25 июня 2009

Либо ждет, пока сервер закроет соединение, либо ожидает, пока не будет прочитано количество байтов из ответа, равного заголовку Content-Length в ответе.

...