BUG: Set-Cookie является пропущенных в CGI при общей со склада

Переводы статьи Переводы статьи
Код статьи: 176113 - Vizualiza?i produsele pentru care se aplic? acest articol.
Корпорация Майкрософт настоятельно рекомендует всем пользователям, провести обновление до Microsoft Internet Information Services (IIS) версии 7.0 на Microsoft Windows Server 2008. IIS 7.0 значительно увеличивает веб-инфраструктуру безопасности. Для получения дополнительных сведений по вопросам безопасности IIS посетите следующий веб-узел корпорации Майкрософт:
http://www.microsoft.com/technet/security/prodtech/iis.mspx
Для получения дополнительных сведений о IIS 7.0 посетите следующий веб-узел корпорации Майкрософт:
http://www.iis.net/default.aspx?tabid=1
Развернуть все | Свернуть все

В этой статье

Проблема

Когда приложение CGI отправляет заголовок Set-Cookie с ответом "302 перемещен объект" и заголовка Location, Internet Information Server (IIS) игнорирует заголовок файла cookie.

Решение

Данное поведение является нарушением спецификации CGI, какие состояния, "все заголовки, не являющихся директивами сервера отправляются непосредственно клиенту. В настоящее время Эта спецификация определяет три сервера директивы..."

Чтобы избежать этого убедитесь, что имя файла EXE-файла начинается с «nph-» и вручную создать всех заголовков HTTP в программе. «nph-» указывает на сервер, что программа CGI для запуска в режиме заголовков не анализируется. CGI имеет два режима. В обычном режиме (разбора заголовков) необходимо отправить одному директивы CGI в стандартный вывод (тип содержимого, расположение или состояние). CGI форматирует допустимой директивы, отправленное в зависимости от строке ответа HTTP. Он форматирует другие стандартные заголовки HTTP, и он должен включать все заголовки, заданных пользователем.

Другой режим — режим-разбор заголовка. В этом режиме CGI не устанавливает все заголовки самого себя. Программа CGI необходимо отформатировать полный ответ HTTP, включая строку ответа и все заголовки. Сервер не будет добавлять или изменять любые заголовки в этом режиме.

Соглашение, чье имя начинается с "nph-" программа CGI выполняется в режиме-разбор заголовка; в противном случае программы CGI выполняются в режиме разбора заголовков.

Статус

Корпорация Майкрософт подтверждает это будет ошибкой в продуктах Майкрософт, перечисленных в начале этой статьи.

Дополнительная информация

Действия для воспроизведения поведения:

Компиляция программы CGI как консольное приложение Win32 и поместите его в папку на сервере IIS, где он может быть выполнена:
#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;
}
				

Вызов программы CGI в обозревателе и просмотрите выходные данные (с помощью сетевого монитора, например). Он будет следующим образом:
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>
				

Обратите внимание, что не было отправлено в заголовке Set-Cookie службами IIS. При наличии предупреждения cookie в обозреватель, не появляется предупреждение.

Чтобы разрешить файл "cookie" для установки в ответ на 302, используйте код, аналогичный приведенному ниже, а префикс "nph-" имя исполняемого файла.
#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;
}
				

Результатом является следующее. Обратите внимание, что теперь отправляется cookie-файла и заголовков, не добавляются на сервере.
HTTP/1.0 302 Redirect
Location: http://www.yahoo.com
Set-Cookie: Name=Value; path=/; expires=Fri, 22 May 1998 21:00:00 GMT
				

Ссылки

(c) Корпорация Майкрософт 1997 года, все права защищены. Вклад работу Braginski, корпорация Майкрософт

Свойства

Код статьи: 176113 - Последний отзыв: 14 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Services 5.0
Ключевые слова: 
kbbug kbnofix kbmt KB176113 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:176113

Отправить отзыв

 

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