CORRECÇÃO: ServerXMLHTTP não retorna cookies usando autenticação NTLM

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: 326847
Sintomas
Você pode usar o objeto ServerXMLHTTP para recuperar e enviar novamente os cookies de sessão. Você pode recuperar o cookie do cabeçalho da resposta e reenviar o cookie por meio do cabeçalho de solicitação. Tudo funciona conforme o esperado quando você usa o método de autenticação anônima . No entanto, quando você usar o método de autenticação NTLM e reenviar o cookie, o cookie é perdido.
Resolução
Para resolver esse problema, use um dos seguintes métodos:
  • Método 1: Instalar o MDAC 2.7 Service Pack 1 (SP1). Isso contém MSXML 3.0 SP3, que contém a correção. MDAC 2.7 SP1 está disponível para download no site da Microsoft:
  • Método 2: Instalar o MSXML 4.0 Parser. O analisador MSXML 4.0 está disponível para download no site da Microsoft: Para usar o MSXML 4.0 altere seu código de programa seguinte identificação:

    Msxml2.ServerXMLHTTP.3.0

    para a seguinte identificação de programa:

    Msxml2.ServerXMLHTTP.4.0
Situação
A Microsoft confirmou que este é um bug no componente ServerXMLHTTP. Ele foi corrigido na versão mais recente do MSXML 3.0 SP3, que está incluído no MDAC 2.7 SP1.
Mais Informações

Passos para reproduzir o problema

  1. No Windows Explorer, crie uma pasta chamada teste na pasta raiz do seu servidor Web A pasta raiz normalmente é encontrada no seguinte local: C:\Inetpub\Wwwroot\.
  2. No painel esquerdo do Internet Information Services, clique com o botão direito do Site padrão , criar um diretório virtual denominado Test e aponte este diretório virtual para a pasta de teste que você criou anteriormente na pasta raiz do seu servidor.
  3. Clique duas vezes o Site padrão , clique com o botão direito do mouse em Test e em seguida, clique em Propriedades .
  4. Na guia Segurança de diretório , clique em Editar e clique para desmarcar a caixa de seleção acesso anônimo . Verifique se a caixa de seleção autenticação integrada do Windows é marcada para a autenticação NTLM.
  5. Usar o bloco de notas para criar um arquivo chamado Sender.asp e para criar um arquivo chamado Receiver.asp e, em seguida, salvar esses arquivos na pasta de teste que você criou anteriormente.
  6. Cole os seguintes segmentos de código em cada arquivo da seguinte maneira: Sender.asp:
    <%		dim sender		dim cookie		'Step 1: Get the Session Cookie		set sender = server.CreateObject("Msxml2.ServerXMLHTTP.3.0")		sender.open "GET", "http://localhost/test/receiver.asp?resubmit=false",false		sender.send		cookie = sender.getResponseHeader("Set-Cookie")				sID = mid(cookie,instr(1,cookie,"=")+1,instr(1,cookie,";")-(instr(1,cookie,"=")+1))		'Display the Session cookie information 		Response.Write "Response Header Information From First Request: <br/><br/>"		Response.Write "Response Header Cookie = " & cookie & "<br/>"		Response.write "SessionID = " & sID & "<br/><br/>"		Response.Write "Setting Request Header Cookie as: " & left(cookie,instr(1,cookie,";")-1) & "<br/>"		Response.Write "<br/>"		set sender = nothing		'Step 2: re-submit the same Session cookie back		set sender = server.CreateObject("Msxml2.ServerXMLHTTP.3.0")		sender.open "POST", "http://localhost/test/receiver.asp?resubmit=true",false		sender.setRequestHeader "COOKIE", left(cookie,instr(1,cookie,";")-1)		sender.setRequestHeader "COOKIE", left(cookie,instr(1,cookie,";")-1)		sender.send "<XML>Sent XML</XML>"		'The response from the ASP page. 				Response.Write "Request Header Cookie received by receiver:</br> " & sender.responseText & "</br>"%> 					

    Receiver.asp:
    <%	Response.Write "Cookie:" & Request.ServerVariables("HTTP_COOKIE")%>					
  7. Execute Sender.asp do seguinte local: http://localhost/Test/Sender.asp
Observe que os cookies de receptor estão faltando.

Proprietăți

ID articol: 326847 - Ultima examinare: 06/06/2003 23:28:14 - Revizie: 3.1

Microsoft Data Access Components 2.7 Service Pack 1, Microsoft XML Parser 3.0 Service Pack 3

  • kbmt kbbug kbfix KB326847 KbMtpt
Feedback