Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

try {

// Иначе вернуться к старой версии

return new ActiveXObject("Msxml2.XMLHTTP.3.О");

}

catch(e2) {

// Если ничего не получилось - возбудить ошибку

throw new Error("XMLHttpRequest не поддерживается”);

}

}

};

}

***********************************************

HTTP-запрос состоит из четырех частей:

• метод HTTP-запроса или тип «операции»

• запрашиваемый URL-адрес

• необязательные заголовки запроса, которые могут включать информацию для аутентификации

• необязательное тело запроса

HTTP-ответ, возвращаемый сервером, состоит из трех частей:

• числовое и текстовое значение, определяющее код состояния, свидетельствующий об успехе или об ошибке

• набор заголовков ответа

• тело ответа

Первые два подраздела, следующие далее, демонстрируют, как устанавливать каждую часть HTTP-запроса и как извлекать части из HTTP-ответа. За этими ключевыми разделами следуют подразделы, освещающие более узкоспециализированные темы.

Базовая архитектура запрос/ответ протокола HTTP весьма проста в использовании. Однако на практике возникает масса сложностей: клиенты и серверы обмениваются данными в виде cookies; серверы переадресуют броузеры на другие серверы; одни ресурсы кэшируются, а другие - нет; некоторые клиенты отправляют запросы через прокси-серверы и т. д. Объект

XMLHttpRequest
не является прикладным интерфейсом уровня протокола, он обеспечивает прикладной интерфейс уровня броузера. Броузер сам заботится о cookies, переадресации, кэшировании и прокси-серверах, а вам достаточно позаботиться только о запросах и ответах.

XMLHttpRequest и локальные файлы

Возможность использования относительных URL-адресов в веб-страницах обычно означает, что HTML-страницы можно разрабатывать и проверять, используя локальную файловую систему, а затем перемещать их на веб-сервер без дополнительных изменений. Однако, как правило, это невозможно при использовании архитектуры Ajax на основе объекта

XMLHttpRequest
. Объект
XMLHttpRequest
предназначен для работы с протоколами HTTP и HTTPS. Теоретически он мог было работать с другими протоколами, такими как FTP, но такие части прикладного интерфейса, как метод запроса и код состояния ответа, являются характерными именно для протокола HTTP. Если загрузить веб-страницу из локального файла, сценарии в этой странице не смогут использовать объект
XMLHttpRequest
с относительными URL-адресами, потому что эти адреса будут относительными адресами вида file://, а неА политика общего происхождения зачастую будет препятствовать использованию абсолютных адресов вида(Тем не менее загляните в раздел 18.1.6.) Таким образом, чтобы проверить вебстраницы, использующие объект
XMLHttpRequest
, их необходимо выгружать на веб-сервер (или использовать локальный веб-сервер).

***************************************************

18.1.1. Выполнение запроса

Следующий этап после создания объекта

XMLHttpRequest
– определение параметров HTTP-запроса вызовом метода
ореn
объекта XMLHttpRequest, которому передаются две обязательные части запроса: метод и URL:

request.open("GET". // Запрос типа HTTP GET

"data.csv"); // на получение содержимого по этому URL-адресу

Первый аргумент метода

open
определяет HTTP-метод или операцию. Это строка, не чувствительная к регистру, но обычно содержащая только символы верхнего регистра, в соответствии со спецификацией протокола HTTP. Методы «GET» и «POST» поддерживаются всеми броузерами. Метод «GET» используется для «обычных» запросов и соответствует случаю, когда URL-адрес полностью определяет запрашиваемый ресурс. Он используется, когда запрос не имеет побочных эффектов и когда ответ сервера можно поместить в кэш. Метод «POST» обычно используется HTML-формами. Он включает в тело запроса дополнительные данные (данные формы), и эти данные часто сохраняются в базе данных на стороне сервера (побочный эффект). В ответ на повторяющиеся запросы POST к одному и тому же URL сервер может возвращать разные ответы, и ответы на запросы, отправленные этим методом, не должны помещаться в кэш.

Помимо запросов «GET» и «POST», спецификация

XMLHttpRequest
также позволяет передавать методу
open
строки «DELETE», «HEAD», «OPTIONS» и «PUT» в первом аргументе. (Методы «HTTP CONNECT», «TRACE» и «TRACK» явно запрещены к использованию из-за проблем с безопасностью.) Старые версии броузеров могут не поддерживать все эти методы, но метод «HEAD», по крайней мере, поддерживается почти всеми броузерами, и его использование демонстрируется в примере 18.13.

Вторым аргументом методу

open
передается URL-адрес запрашиваемого ресурса. Это относительный URL-адрес документа, содержащего сценарий, в котором вызывается метод
open.
Если указать абсолютный адрес, то в общем случае протокол, доменное имя и порт должны совпадать с аналогичными параметрами адреса документа: нарушение политики общего происхождения обычно вызывает ошибку. (Однако спецификация «XMLHttpRequest Level 2» допускает выполнение запросов к другим серверам, если сервер явно разрешил это - смотрите раздел 18.1.6.)

  • Читать дальше
  • 1
  • ...
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: