JavaScript. Подробное руководство, 6-е издание, стр. 534

<b>readonly XMLHttpRequestUpload upload</b>

Свойство, введенное спецификацией XHR2, ссылающееся на объект

<b>XMLHttpRequestUpload</b>
, который определяет набор свойств регистрации обработчиков событий для слежения за процессом выгрузки тела НТТР-запроса.

<b>boolean withCredentials</b>

Свойство, введенное спецификацией XHR2, определяющее необходимость аутентификации при выполнении междоменного CORS-запроса и необходимость обработки заголовков cookie в CORS-ответах. По умолчанию имеет значение false.

Методы

<b>void abort()</b>

Возвращает объект

<b>XMLHttpRequest</b>
в исходное состояние, соответствующее значению 0 в свойстве
<b>readyState</b>
, и отменяет любые запланированные сетевые взаимодействия. Этот метод может потребоваться, например, если запрос выполняется слишком долго и надобность в получении ответа уже отпала.

<b>string getAllResponseHeaders()</b>

Возвращает все HTTP-заголовки ответа (с отфильтрованными заголовками cookie и CОRS), полученные от сервера, или null, если заголовки еще не были получены. Заголовки cookie и CОRS отфильтровываются и не могут быть получены. Заголовки возвращаются в виде единственной строки и отделяются друг от друга комбинацией символов \r\n.

<b>string getResponseHeader(string header)</b>

Возвращает значение указанного заголовка header в HTTP-ответе или null, если заголовки вообще не были получены или если ответ не содержит требуемого заголовка header. Заголовки cookie и CORS отфильтровываются, и их нет смысла запрашивать. Если было принято несколько заголовков с указанным именем, значения этих заголовков объединяются в одну строку через запятую и пробел.

<b>void open(string method, string url, [boolean async, string user, string pass])</b>

Этот метод инициализирует объект

<b>XMLHttpRequest</b>
и сохраняет свои аргументы для последующего использования методом
<b>send().</b>

Аргумент method определяет HTTP-метод, используемый для отправки запроса. Среди наиболее устоявшихся методов можно назвать GET, POST и HEAD. Реализации могут также поддерживать методы CONNECT, DELETE, OPTIONS, PUT, TRACE и TRACK.

Аргумент url определяет URL-адрес, который является предметом запроса. Разрешение относительных URL-адресов производится обычным образом с использованием URL-адреса документа со сценарием. Политика общего происхождения (см. раздел 13.6.2) требует, чтобы данный URL-адрес содержал те же имя хоста и номер порта, что и документ со сценарием, выполняющим запрос. Объект XHR2 позволяет выполнять междоменные запросы к серверам, поддерживающим заголовки CORS. Если аргумент async указан и имеет значение false, запрос будет выполняться в синхронном режиме, и последующий вызов

<b>send()</b>
заблокирует работу сценария, пока ответ не будет получен полностью. Синхронные запросы рекомендуется использовать только в фоновых потоках выполнения.

Необязательные аргументы user и pass определяют имя пользователя и пароль для НТТР-запроса.

<b>void overrideMimeType(string mime)</b>

Этот метод позволяет указать, что ответ сервера должен интерпретироваться в соответствии с указанным MIME-типом mime (и параметром charset, если он указан в определении типа mime), без учета значения заголовка

<b>Content-Type</b>
в ответе.

<b>void send(any body)</b>

Инициирует выполнение HTTP-запроса. Если перед этим не вызывался метод

<b>ореn()</b>
или, обобщенно, если значение свойства
<b>readyState</b>
не равно 1, метод
<b>send()</b>
возбуждает исключение. В противном случае он начинает выполнение НТТР-запроса, который состоит из:

• НТТР-метода, URL-адреса и информации об авторизации (если необходимо), определенных предшествующим вызовом метода

<b>ореn()</b>
;

• заголовков запроса, если они были определены предшествующим вызовом метода

<b>setRequestHeader()</b>
;

• значения аргумента body, переданного данному методу. Аргумент body может быть строкой, объектом

<b>Document</b>
, образующим тело запроса; он может быть опущен или иметь значение null, если запрос не имеет тела (например, GET-запросы вообще не имеют тела). Согласно спецификации XHR2 телом запроса также могут быть объекты
<b>ArrayBuffer, Blob и FormData</b>
.

Если в предшествующем вызове метода

<b>ореn()</b>
аргумент async имел значение false, данный метод блокируется и не возвращает управление, пока значение свойства
<b>readyState</b>
не станет равно 4 и ответ сервера не будет получен полностью. В противном случае метод
<b>send()</b>
немедленно возвращает управление, а ответ сервера обрабатывается асинхронно, с помощью обработчиков событий.

<b>void setRequestHeader(string name, string value)</b>

Определяет HTTP-заголовок с именем name и значением value, который должен быть включен в запрос, передаваемый последующим вызовом метода

<b>send().</b>
Этот метод может вызываться, только когда свойство
<b>readyState</b>
имеет значение 1, т.е. после вызова метода
<b>ореn(),</b>
но перед вызовом метода
<b>send().</b>

Если заголовок с именем пате уже был определен, новым значением заголовка станет прежнее значение заголовка плюс запятая с пробелом и новое значение value, переданное методу.

Если методу open() была передана информация об авторизации, объект

<b>XMLHttp</b>
-Request автоматически добавит заголовок Authorization. Однако этот заголовок может быть также добавлен методом
<b>setRequestHeader().</b>

Объект

<b>XMLHttpRequest</b>
автоматически устанавливает заголовки «Content-Length», «Date», «Referer» и «User-Agent» и не позволяет изменять их значения. Существует еще несколько заголовков, включая заголовки, имеющие отношение к cookies, которые нельзя установить с помощью этого метода. Полный их список приводится в разделе 18.1.

Обработчики событий

Оригинальный объект

<b>XMLHttpRequest</b>
определяет только одно свойство регистрации обработчика событий:
<b>onreadystatechange</b>
. Спецификация XHR2 дополняет этот список множеством обработчиков событий хода выполнения запроса, которые намного проще в использовании. Зарегистрировать обработчики можно с помощью свойств, перечисленных ниже, или с помощью методов интерфейса
<b>EventTarget</b>
. События, возникающие в объекте
<b>XMLHttpRequest</b>
, всегда доставляются самому объекту
<b>XMLHttpRequest</b>
. Они не всплывают и не предусматривают действий по умолчанию, которые можно было бы отменить. Обработчикам событий «readystatechange» передается объект Event, а обработчикам остальных событий - объект
<b>ProgressEvent</b>
.