Terminologia de rede (WinHTTP)
Ao desenvolver um aplicativo que usa os Serviços HTTP do Microsoft Windows (WinHTTP), é importante entender os conceitos e terminologia a seguir relacionados à rede em geral e ao protocolo HTTP em particular.
Transações HTTP
Ao trabalhar com transações HTTP, você está trocando informações com outro computador em outro lugar em uma rede. As informações trocadas podem ser um arquivo que contém texto ou multimídia ou podem ser os resultados de uma consulta de banco de dados. Uma informação trocada por uma rede é chamada de recurso. Normalmente, o computador que envia um recurso é o servidor e o computador que recebe esse recurso é um cliente. No entanto, também é possível que um cliente poste dados em um servidor. Às vezes, uma transação HTTP envolve um servidor de camada intermediária. Um servidor de camada intermediária reúne vários recursos de outros servidores, compila as informações em um recurso e envia esse recurso para o cliente.
O processo de obtenção de um recurso usando o protocolo HTTP requer que uma série de mensagens sejam trocadas entre o cliente e o servidor. O cliente inicia a transação enviando uma mensagem que solicita um recurso. Essa mensagem é chamada de solicitação HTTP ou, às vezes, apenas uma solicitação. Uma solicitação HTTP consiste nos seguintes componentes.
- Método, URI (Uniform Resource Identifier), número de versão do protocolo
- Cabeçalhos
- Corpo da entidade
Quando um servidor recebe uma solicitação, ele responde enviando uma mensagem de volta para o cliente. A mensagem enviada pelo servidor é chamada de resposta HTTP. Uma resposta HTTP consiste nos componentes a seguir.
- Número de versão do protocolo, código de status status texto
- Cabeçalhos
- Corpo da entidade
A resposta indica que a solicitação não pode ser processada ou fornece informações solicitadas. Dependendo do tipo de solicitação, isso pode ser informações sobre um recurso, como seu tamanho e tipo, ou pode ser algum ou todo o recurso em si. A parte de uma resposta que inclui parte ou todo o recurso solicitado é chamada de "dados de resposta" ou "corpo da entidade", e a resposta não é concluída até que todos os dados de resposta sejam recebidos.
Para obter informações detalhadas sobre transações HTTP e o protocolo HTTP, consulte RFC 2616, Hypertext Transfer Protocol — HTTP/1.1.
Servidores proxy
Embora uma solicitação enviada por um cliente seja eventualmente recebida pelo servidor de destino, às vezes a transação passa primeiro por um servidor proxy. Um proxy intercepta a solicitação e pode até mesmo modificar a solicitação antes de enviá-la para o servidor. Quando o servidor responde, a resposta também passa pelo proxy antes de ser encaminhada para o cliente. O proxy pode modificar os cabeçalhos nesta resposta.
Ao interceptar e traduzir transações de rede, um proxy pode:
- Proteja o cliente monitorando transações potencialmente perigosas.
- Permitir que o cliente se comunique usando protocolos que podem não ser implementados pelo software cliente.
- Atuar como um gateway entre uma rede privada e uma rede pública.
A API WinHTTP inclui uma ferramenta de configuração de proxy que permite fornecer ao WinHTTP informações sobre os servidores proxy que interceptam suas transações HTTP. Para obter informações sobre como usar a ferramenta de configuração de proxy, consulte ProxyCfg.exe, uma Ferramenta de Configuração de Proxy.
Modos síncronos e assíncronos
Há dois modelos de programação para obter recursos em uma rede usando WinHTTP: os modelos síncronos e assíncronos. Em um modelo síncrono, uma chamada para uma função ou método não é concluída até que a operação solicitada seja concluída ou até que ocorra um erro. Por exemplo, quando o aplicativo solicita um recurso usando WinHTTP de forma síncrona, ele não continua com a próxima etapa até que os dados solicitados sejam recebidos.
Um modelo assíncrono, por outro lado, permite que um aplicativo execute outras tarefas enquanto aguarda a recuperação do recurso. Se outra função ou método WinHTTP for chamado e uma operação anterior não tiver sido concluída, a função retornará um erro. Ao usar o WinHTTP de forma assíncrona, os eventos e o retorno de chamada do COM (Component Object Model) estão disponíveis para notificar um aplicativo de progresso em uma operação HTTP.
Autenticação
A autenticação é o processo pelo qual um proxy HTTP ou servidor HTTP valida as informações de logon de um usuário antes de permitir o acesso aos recursos. Vários esquemas de autenticação são usados na Internet. Normalmente, o nome e a senha de um usuário são comparados com uma lista autorizada e, se o sistema detectar uma correspondência, o acesso será concedido na extensão especificada na lista de permissões para o usuário.
As funções WinHTTP dão suporte à autenticação de servidor e proxy para sessões HTTP. O WinHTTP dá suporte aos seguintes esquemas de autenticação: Básico, Digest (consulte RFC 2617), Autenticação NTLM, Negotiate/ Kerberos e Microsoft Passport 1.4. Para obter informações detalhadas sobre autenticação, bem como um exemplo de como usar a autenticação em um aplicativo Microsoft Visual C++, consulte Autenticação no WinHTTP.
Para obter informações sobre considerações de segurança sobre autenticação Básica e Passport, consulte Considerações de segurança do WinHTTP.