2009-06-24 6 views
1

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

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

ответ

2

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

2

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