<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>
.