Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При разработке приложения, использующего службы HTTP Microsoft Windows (WinHTTP), важно понимать следующие понятия и терминологию, связанные с сетями в целом и протоколом HTTP, в частности.
HTTP-транзакции
При работе с HTTP-транзакциями вы обмениваетесь информацией с другим компьютером в другой точке сети. Обмен данными может быть файлом, который содержит текст или мультимедиа, или это могут быть результаты запроса базы данных. Часть информации, обменився по сети, называется ресурсом. Обычно компьютер, отправляющий ресурс, является сервером и компьютером, который получает этот ресурс является клиентом. Однако клиент также может отправлять данные на сервер. Иногда транзакция HTTP включает сервер среднего уровня. Сервер среднего уровня собирает несколько ресурсов с других серверов, компилирует сведения в один ресурс и отправляет этот ресурс клиенту.
Процесс получения ресурса с помощью протокола HTTP требует обмена рядом сообщений между клиентом и сервером. Клиент начинает транзакцию, отправляя сообщение, запрашивающее ресурс. Это сообщение называется HTTP-запросом или иногда просто запросом. HTTP-запрос состоит из следующих компонентов.
- Метод, универсальный идентификатор ресурса (URI), номер версии протокола
- Заголовки
- Тело сущности
Когда сервер получает запрос, он отвечает, отправив клиенту сообщение обратно. Сообщение, отправленное сервером, называется HTTP-ответом. Ответ HTTP состоит из следующих компонентов.
- Номер версии протокола, код состояния, текст состояния
- Заголовки
- Тело сущности
Ответ указывает, что запрос не может быть обработан или предоставляет запрошенные сведения. В зависимости от типа запроса это может быть информация о ресурсе, например его размер и тип, или может быть частью или всем ресурсом. Часть ответа, включающая некоторые или все запрошенные ресурсы, называется "данные ответа" или "тело сущности", а ответ не будет завершен до получения всех данных ответа.
Подробные сведения о транзакциях HTTP и протоколе HTTP см. в RFC 2616, протокол гипертекстовой передачи — HTTP/1.1.
Прокси-серверы
Хотя запрос, отправленный клиентом, в конечном итоге получается целевым сервером, иногда транзакция сначала проходит через прокси-сервер. Прокси-сервер перехватывает запрос и даже может изменять запрос, прежде чем отправлять его на сервер. Когда сервер отвечает, ответ также передается через прокси-сервер, прежде чем он перенаправится на клиент. Прокси-сервер может изменить заголовки в этом ответе.
Перехват и перевод сетевых транзакций прокси может:
- Защитите клиента, отслеживая потенциально опасные транзакции.
- Включите клиенту обмен данными с помощью протоколов, которые могут быть не реализованы клиентским программным обеспечением.
- Выступайте в качестве шлюза между частной сетью и общедоступной сетью.
API WinHTTP включает в себя средство настройки прокси-сервера, позволяющее предоставить WinHTTP сведения о любых прокси-серверах, перехватывающих http-транзакции. Дополнительные сведения об использовании средства настройки прокси-сервера см. в разделе ProxyCfg.exe, средство настройки прокси-сервера.
Синхронные и асинхронные режимы
Существует две модели программирования для получения ресурсов через сеть с помощью WinHTTP — синхронных и асинхронных моделей. В синхронной модели вызов функции или метода не завершается до завершения запрошенной операции или до возникновения ошибки. Например, когда приложение запрашивает ресурс с помощью WinHTTP синхронно, оно не продолжается до получения запрошенных данных.
С другой стороны, асинхронная модель позволяет приложению выполнять другие задачи во время ожидания извлечения ресурса. Если вызывается другая функция или метод WinHTTP, а предыдущая операция не завершена, функция возвращает ошибку. При использовании WinHTTP асинхронно события и обратный вызов компонентной объектной модели (COM) доступны для уведомления о ходе выполнения операции HTTP.
Аутентификация
Проверка подлинности — это процесс, с помощью которого прокси-сервер HTTP или HTTP-сервер проверяет сведения о входе пользователя, прежде чем он разрешает доступ к ресурсам. Различные схемы проверки подлинности используются в Интернете. Обычно имя и пароль пользователя сравниваются с авторизованным списком, и если система обнаруживает совпадение, доступ предоставляется в той степени, в которой указан список разрешений для пользователя.
Функции WinHTTP поддерживают проверку подлинности сервера и прокси-сервера для сеансов HTTP. WinHTTP поддерживает следующие схемы проверки подлинности: Basic, Digest (см. RFC 2617), аутентификации NTLM, согласование или Kerberosи Microsoft Passport 1.4. Подробные сведения о проверке подлинности, а также пример использования проверки подлинности в приложении Microsoft Visual C++ см. в разделе Аутентификация в WinHTTP.
Сведения о безопасности, связанные с проверкой подлинности Basic и Passport, см. в статье Вопросы безопасности WinHTTP.