DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 176113 - Última revisão: quinta-feira, 3 de Julho de 2008 - Revisão: 5.0

 
Recomendamos vivamente que todos os utilizadores actualizem para Microsoft (IIS) versão 7.0 em execução no Microsoft Windows Server 2008. O IIS 7.0 aumenta significativamente a segurança da infra-estrutura Web. Para mais informações sobre tópicos relacionados com a segurança do IIS, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx (http://www.microsoft.com/technet/security/prodtech/IIS.mspx)
Para obter mais informações sobre o IIS 7.0, visite o seguinte Web site da Microsoft:
http://www.iis.net/default.aspx?tabid=1 (http://www.iis.net/default.aspx?tabid=1)

Nesta página

Sintomas

Quando uma aplicação CGI envia um cabeçalho de conjunto de cookies com "302 objecto Moved" resposta e cabeçalho de localização, o Internet Information Server (IIS) ignora o cabeçalho do cookie.

Resolução

Este comportamento consiste numa violação da especificação de CGI que estados, "qualquer cabeçalhos não são directivas de servidor são enviados directamente novamente para o cliente. Actualmente, esta especificação define três directivas de servidor..."

Como solução, certifique-se o nome de ficheiro de um EXE começa por "nph-" e criar manualmente todos os cabeçalhos HTTP no programa. "nph-" indica ao servidor que o programa CGI deve ser executada no modo de cabeçalhos não analisado. CGI tem dois modos. No modo normal (analisados cabeçalhos), tem de enviar um as directivas CGI para saída padrão (tipo de conteúdo, localização ou estado). CGI formata uma linha de resposta HTTP válida baseada a directiva que enviou. Formata outros cabeçalhos HTTP padrão para e deverá incluir outros cabeçalhos que especificou.

O modo é modo de cabeçalho não analisado. Neste modo CGI não define quaisquer cabeçalhos propriamente dito. O programa CGI tem de formatar uma resposta HTTP completa incluindo a linha de resposta e todos os cabeçalhos. O servidor não irá adicionar ou modificar quaisquer cabeçalhos para si neste modo.

A convenção é que um programa CGI cujo nome comece por "nph-" é executado no modo de cabeçalho não analisado; caso contrário, os programas CGI são executados no modo de cabeçalho analisada.

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

Compilar este programa CGI como uma aplicação de consola Win32 e coloque-a numa pasta no servidor de IIS onde podem ser executada:
#include <stdio.h>
int main()
{
  printf("Location: %s\r\n", "http://www.yahoo.com");
  printf("Set-Cookie: Name1=Value1; path=/;
    expires=Fri, 22 May 1998 21:00:00 GMT\r\n\r\n");
  return 0;
}
				

Chame o programa CGI a partir do browser e observe a respectiva saída (através de monitor de rede, por exemplo). Será semelhante ao seguinte:
HTTP/1.0 302 Object moved
Location: http://www.yahoo.com
Server: Microsoft-IIS/2.0
Content-Type: text/html
Content-Length: 145

<head><title>Document moved</title></head>
<body><h1>Object Moved</h1>This document may be found
<a HREF="http://www.yahoo.com">here</a></body>
				

Tenha em atenção que o cabeçalho do cookie conjunto não foi enviado pelo IIS. Não se tiver avisos de cookie activados no browser, aparecerá nenhum aviso.

Para permitir que um cookie seja definida numa resposta 302, utilize código semelhante ao seguinte e prefixo "nph-" para o nome do ficheiro executável:
#include <stdio.h>
int main()
{
  printf("HTTP/1.0 302 Redirect\r\n");
  printf("Location: %s\r\n", "http://www.yahoo.com");
  printf("Set-Cookie: Name=Value; path=/; expires=Fri, 22 May 1998 21:00:00
   GMT\r\n\r\n");
  return 0;
}
				

O resultado é semelhante à seguinte. Note que o cookie agora é enviado e não os cabeçalhos são adicionados pelo servidor.
HTTP/1.0 302 Redirect
Location: http://www.yahoo.com
Set-Cookie: Name=Value; path=/; expires=Fri, 22 May 1998 21:00:00 GMT
				

Referências

(c) 1997 Microsoft Corporation, todos os direitos reservados. Contribuições de Leon Braginski, Microsoft Corporation

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Serviços de informação Internet 5.0 da Microsoft
Palavras-chave: 
kbmt kbbug kbnofix KB176113 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 176113  (http://support.microsoft.com/kb/176113/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft