Error: Set-cookie se omite en CGI cuando combinada con la ubicación

Seleccione idioma Seleccione idioma
Id. de artículo: 176113 - Ver los productos a los que se aplica este artículo
Recomendamos encarecidamente que todos los usuarios actualizar a Microsoft Internet Information Services (IIS) versión 7.0 que se ejecutan en Microsoft Windows Server 2008. IIS 7.0 aumenta notablemente la seguridad de la infraestructura Web. Para obtener más información acerca de temas relacionados con la seguridad IIS, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
Para obtener más información acerca de IIS 7.0, visite el siguiente sitio Web de Microsoft:
http://www.iis.net/default.aspx?tabid=1
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando una aplicación CGI envía un encabezado set-cookie con la respuesta "302 Objeto movido" y el encabezado Location, Information Server (IIS) omite el encabezado de cookie.

Solución

Este comportamiento es infracción de la especificación CGI, qué estados "los encabezados que no son directivas de servidor se envían directamente volver al cliente. Actualmente, esta especificación define tres directivas de servidor..."

Como solución, asegúrese de que el nombre de archivo del archivo EXE comienza con "nph-" y crear manualmente todos los encabezados HTTP en el programa. "nph-" indica al servidor que el programa CGI es se ejecutar en modo de no analizar encabezados. CGI tiene dos modos. En modo normal (encabezados analizados), debe enviar una de las directivas CGI a salidas estándar (Content-type, ubicación o estado). CGI da formato a una línea de respuesta HTTP válida según la directiva que ha enviado. Da formato a otros encabezados HTTP estándar para, y debe incluir cualquier otros encabezados que haya especificado.

El modo de otro es el modo de encabezado no analiza. En este modo CGI no establece los encabezados propio. El programa CGI debe dar formato una respuesta HTTP completa incluyendo la línea de respuesta y todos los encabezados. El servidor no agregará o modificar los encabezados para en este modo.

La convención es que se ejecuta un programa CGI cuyo nombre comienza con "nph-" en modo de encabezado no analiza; en caso contrario, se ejecutan programas en modo de encabezado analizada.

Estado

Microsoft ha confirmado que se trata de un error de los productos Microsoft enumerados al principio de este artículo.

Más información

Pasos para reproducir este comportamiento

Compilar este programa CGI como una aplicación de consola Win32 y colocarlo en una carpeta en el servidor de IIS donde se puede ejecutar:
#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;
}
				

Invoque el programa CGI desde su explorador y observe su resultado (a través del Monitor de red, por ejemplo). Será similar a éste:
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>
				

Tenga en cuenta que el encabezado set-cookie no se ha enviado por IIS. Si tiene activadas en el Explorador de advertencias de cookie, no aparece ninguna advertencia.

Para permitir una cookie esté establecido en una respuesta 302, utilizar código similar al siguiente y el prefijo "nph-" para el nombre del archivo ejecutable:
#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;
}
				

El resultado es similar al siguiente. Observe que ahora se envía la cookie y no se agregan por el servidor encabezados.
HTTP/1.0 302 Redirect
Location: http://www.yahoo.com
Set-Cookie: Name=Value; path=/; expires=Fri, 22 May 1998 21:00:00 GMT
				

Referencias

(c) 1997 Microsoft Corporation, reservados todos los derechos. Contribuciones por Leon Braginski, Microsoft Corporation

Propiedades

Id. de artículo: 176113 - Última revisión: jueves, 03 de julio de 2008 - Versión: 5.0
La información de este artículo se refiere a:
  • Servicios de Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Server 4.0
  • Servicios de Microsoft Internet Information Server 5.0
Palabras clave: 
kbmt kbbug kbnofix KB176113 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 176113

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com