BUG: คุกกี้เซ็ตถูกละเว้นใน CGI เมื่อแบบรวมกับตำแหน่งที่ตั้ง

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 176113 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
เราขอแนะนำให้ ผู้ใช้ทั้งหมดปรับรุ่นไปยัง Microsoft ข้อมูลบริการทางอินเทอร์เน็ต (IIS) รุ่น 7.0 ทำงานบน Microsoft Windows Server 2008 iis 7.0 เพิ่มความปลอดภัยของโครงสร้างพื้นฐานเว็บมาก สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อที่เกี่ยวข้องกับการรักษาความปลอดภัย IIS แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ IIS 7.0 แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft:
http://www.iis.net/default.aspx?tabid=1
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อโปรแกรมประยุกต์ CGI ที่ส่งไปในหัวข้อเซ็ตคุกกี้กับการตอบสนอง "Moved วัตถุ 302" และส่วนหัวของที่ตั้ง Server ข้อมูลทางอินเทอร์เน็ต (IIS) ละเว้นส่วนหัวของคุกกี้

การแก้ไข

ลักษณะการทำงานนี้เป็นการละเมิดข้อกำหนดเฉพาะ CGI สภาวะใด "มีส่วนหัวที่ไม่ใช่เซิร์ฟเวอร์ directives จะถูกส่งโดยตรงกลับไปยังไคลเอ็นต์ ในขณะนี้ ข้อมูลจำเพาะเกี่ยวกับการทำงานนี้กำหนด directives เซิร์ฟเวอร์สาม..."

เป็นวิธีแก้ไขปัญหา ตรวจสอบให้แน่ใจว่า ชื่อแฟ้มของ EXE ขึ้นต้น ด้วย "nph-" และสร้างส่วนหัว HTTP ทั้งหมดในโปรแกรมของคุณด้วยตนเอง "nph-" บ่งชี้ไปยังเซิร์ฟเวอร์ที่โปรแกรม CGI นั้นจะถูกรันในโหมดที่ไม่ได้แยกวิเคราะห์ข้อมูลส่วนหัว cgi ได้สองวิธี ในโหมดปกติ (ส่วนหัว parsed), คุณต้องส่ง CGI directives อย่างใดอย่างหนึ่งในการแสดงผลมาตรฐาน (ชนิดของเนื้อหา ที่ตั้ง หรือสถานะ) cgi จัดรูปแบบถูกต้อง HTTP ตอบสนองบรรทัดขึ้นอยู่กับ directive คุณส่ง คุณจัดรูปแบบอื่น ๆ ส่วนหัว HTTP ที่มาตรฐานคุณ และมันควรรวมหัวอื่น ๆ ที่คุณระบุ

โหมดอื่น ๆ เป็นส่วนหัวที่ไม่ได้แยกวิเคราะห์โหมด ในโหมดนี้ CGI ไม่ตั้งค่าส่วนหัวที่ตัวเอง โปรแกรม CGI ต้องจัดรูปแบบการตอบสนอง HTTP แบบเต็มที่รวมบรรทัดการตอบสนองและหัวข้อทั้งหมด เซิร์ฟเวอร์จะไม่เพิ่ม หรือแก้ไขหัวข้อต่าง ๆ สำหรับคุณในโหมดนี้

นี้คือ ว่า มีการเรียกใช้โปรแกรม CGI ที่มีชื่อขึ้นต้น ด้วย "nph-" ในหัวข้อที่ไม่ได้แยกวิเคราะห์โหมด มิฉะนั้น การเรียกใช้โปรแกรม CGI ในโหมดหัว parsed

สถานะ

Microsoft ได้รับการยืนยันนี้จะเป็นปัญหาที่เกิดขึ้นในผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ที่ตำแหน่งเริ่มต้นของบทความนี้

ข้อมูลเพิ่มเติม

ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน

โปรแกรมนี้ 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>
				

โปรดสังเกตว่า ส่วนหัวของคุกกี้เซ็ตได้ไม่ถูกส่ง โดย IIS ถ้าคุณมีคำเตือนคุกกี้ที่เปิดในเบราว์เซอร์ของคุณ ไม่มีคำเตือนปรากฏขึ้น

เมื่อต้องการอนุญาตคุกกี้ถูกกำหนดในการตอบสนอง 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;
}
				

ผลลัพธ์เป็นเหมือนกับข้อความต่อไปนี้ โปรดสังเกตว่า คุกกี้ถูกส่งในขณะนี้ และส่วนหัวไม่ถูกเพิ่ม โดยเซิร์ฟเวอร์
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) Microsoft Corporation 1997 สิทธิ์ทั้งหมดที่สำรองไว้ contributions โดย Leon Braginski, Microsoft Corporation

คุณสมบัติ

หมายเลขบทความ (Article ID): 176113 - รีวิวครั้งสุดท้าย: 12 ตุลาคม 2553 - Revision: 2.0
ใช้กับ
  • Microsoft Internet Information Server 3.0
  • Microsoft Internet Information Services 5.0
Keywords: 
kbbug kbnofix kbmt KB176113 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้: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