DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 176113 - Última revisão: quinta-feira, 3 de julho de 2008 - Revisão: 5.0

 
É altamente recomendável que todos os usuários atualizem para Microsoft (IIS) versão 7.0 em execução no Microsoft Windows Server 2008. O IIS 7.0 aumenta significativamente a segurança de infra-estrutura da Web. Para obter mais informações sobre tópicos relacionados à segurança do IIS, visite o seguinte site:
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 site:
http://www.iis.net/default.aspx?tabid=1 (http://www.iis.net/default.aspx?tabid=1)

Nesta página

Sintomas

Quando um aplicativo CGI envia um cabeçalho Set-cookie com resposta de "302 movido de objeto" e o cabeçalho de local, Internet Information Server (IIS) ignora o cabeçalho de cookie.

Resolução

Esse comportamento é em violação da especificação do CGI, quais estados, "qualquer cabeçalhos que não são diretivas de servidor são enviados diretamente de volta ao cliente. Atualmente, essa especificação define três diretivas de servidor..."

Para solucionar esse problema, verifique se o nome do arquivo do EXE começa com "nph-" e criar manualmente todos os cabeçalhos HTTP no seu programa. "nph-" indica ao servidor que o programa CGI é ser executado no modo de cabeçalhos não analisados. CGI tem dois modos. No modo normal (analisados cabeçalhos), você deve enviar uma das diretivas CGI para saída padrão (tipo de conteúdo, local ou status). CGI formata uma linha de resposta HTTP válida baseada na diretiva que você enviou. Formata outros cabeçalhos HTTP padrão para você, e ele deve incluir outros cabeçalhos que você especificou.

Outro modo é modo de cabeçalho não analisada. Nesse modo CGI não define os cabeçalhos propriamente dito. O programa CGI deve formatar uma resposta HTTP inteira incluindo a linha de resposta e todos os cabeçalhos. O servidor não irá adicionar ou modificar os cabeçalhos para você nesse modo.

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

Situação

A Microsoft confirmou este é um bug em produtos Microsoft listados no começo deste artigo.

Mais Informações

Etapas para reproduzir o problema

Compilar este programa CGI como um aplicativo de Console Win32 e coloque-lo em uma pasta no servidor IIS onde ela pode 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 no seu navegador e observe sua saída (por meio do Monitor de rede, por exemplo). Ele será semelhante a esta:
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>
				

Observe que o cabeçalho Set-cookie não foi enviado pelo IIS. Se você tiver ativados no navegador de avisos de cookie, nenhum aviso aparecerá.

Para permitir que um cookie seja definido em uma resposta 302, use código semelhante ao seguinte e o prefixo "nph-" para o nome do arquivo 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;
}
				

A saída é semelhante à seguinte. Observe que o cookie agora é enviado e nenhum cabeçalho é adicionadas 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 por 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
  • Microsoft Internet Information Services 5.0
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store