HTTP / 1.1 302 หมายความว่าอย่างไร


121

บางบทความที่ฉันอ่านเคยบอกว่ามันหมายถึงการกระโดด (จาก URI หนึ่งไปยังอีกอันหนึ่ง) แต่ฉันตรวจพบ "302" นี้แม้ว่าจะไม่มีการกระโดดเลยก็ตาม!


1
อาจจะมีบางข้อมูลที่ดีเกี่ยวกับเรื่องนี้ที่นี่ในเอกสาร wc3.org
Copas

2
ให้ความสนใจเป็นพิเศษ: example.com example.comและexample.comมีความแตกต่างกันในเชิงตรรกะและไซต์ที่ต้องการเข้าถึงผ่าน URL เดียวอาจเปลี่ยนเส้นทางจากที่หนึ่งไปยังอีกที่หนึ่งเพื่อให้บรรลุเป้าหมายนี้ แน่นอนว่าการเปลี่ยนเส้นทาง 302 เป็นตัวเลือกที่ไม่ดีสำหรับสิ่งนี้ ... แต่คุณอาจเคยเห็นรูปแบบที่ละเอียดอ่อนในทำนองเดียวกัน
Shog9

อ้างอิงเว็บไซต์นี้ ( hostingpill.com/http-302-error )
virusarthak

คำตอบ:


74

การเปลี่ยนเส้นทาง 302 หมายความว่าเพจถูกย้ายชั่วคราวในขณะที่ 301 หมายความว่าเพจถูกย้ายอย่างถาวร

301s นั้นดีสำหรับค่า SEO ในขณะที่ 302 ไม่ได้เป็นเพราะ 301s สั่งให้ลูกค้าลืมคุณค่าของ URL เดิมในขณะที่ 302 จะคงคุณค่าของ URL เดิมไว้และอาจลดค่าลงได้ด้วยการสร้าง URL สองรายการที่แตกต่างกันอย่างมีเหตุผล แต่ละรายการสร้างเนื้อหาเดียวกัน (เครื่องมือค้นหามองว่าเป็นรายการที่ซ้ำกันมากกว่าทรัพยากรเดียวที่มีชื่อสองชื่อ)


58

คำถามนี้ถูกถามเมื่อนานมาแล้วในขณะที่ RFC 2616 ยังคงแขวนอยู่ คำตอบบางส่วนสำหรับคำถามนี้อยู่ในเอกสารดังกล่าวซึ่งไม่เกี่ยวข้องอีกต่อไปแล้วในปัจจุบัน อ้างถึงMark Nottinghamซึ่งเป็นประธานร่วมใน IETF HTTP และ QUIC Working Groups ในขณะที่เขียน:

อย่าใช้ RFC2616 ลบออกจากฮาร์ดไดรฟ์บุ๊กมาร์กและเบิร์น (หรือรีไซเคิลอย่างรับผิดชอบ) สำเนาใด ๆ ที่พิมพ์ออกมา

RFC 2616 รุ่นเก่าถูกแทนที่ด้วยเอกสารต่อไปนี้ซึ่งร่วมกันกำหนดโปรโตคอล HTTP / 1.1:

  • RFC 7230 : ไวยากรณ์ของข้อความและการกำหนดเส้นทาง
  • RFC 7231 : ความหมายและเนื้อหา
  • RFC 7232 : คำขอแบบมีเงื่อนไข
  • RFC 7233 : คำขอช่วง
  • RFC 7234 : การแคช
  • RFC 7235 : การรับรองความถูกต้อง

ดังนั้นฉันจึงมุ่งมั่นที่จะให้คำตอบตามRFC 7231ซึ่งเป็นการอ้างอิงปัจจุบันสำหรับรหัสสถานะ HTTP / 1.1

302รหัสสถานะ

การตอบกลับ302เป็นวิธีทั่วไปในการเปลี่ยนเส้นทาง URL นอกจาก302รหัสสถานะแล้วการตอบกลับควรมีLocationส่วนหัวที่มี URI ที่แตกต่างกัน ส่วนหัวดังกล่าวจะถูกแยกวิเคราะห์โดยตัวแทนผู้ใช้จากนั้นดำเนินการเปลี่ยนเส้นทาง:


ตัวอย่างการเปลี่ยนเส้นทาง


เว็บเบราว์เซอร์อาจเปลี่ยนจากPOSTเป็นGETในการร้องขอในภายหลัง หากพฤติกรรมนี้ไม่เป็นที่ต้องการ307สามารถใช้รหัสสถานะ (การเปลี่ยนเส้นทางชั่วคราว) แทนได้

นี่คือวิธีกำหนด302รหัสสถานะในRFC 7231 :

6.4.3 พบ 302

302(พบ) รหัสสถานะบ่งชี้ว่าทรัพยากรเป้าหมายอาศัยอยู่ชั่วคราวภายใต้ URI ที่แตกต่างกัน เนื่องจากการเปลี่ยนเส้นทางอาจมีการเปลี่ยนแปลงในบางครั้งลูกค้าจึงควรใช้ URI คำขอที่มีประสิทธิภาพสำหรับคำขอในอนาคตต่อไป

เซิร์ฟเวอร์ควรสร้างLocationฟิลด์ส่วนหัวในการตอบกลับที่มีการอ้างอิง URI สำหรับ URI ที่แตกต่างกัน ตัวแทนผู้ใช้อาจใช้Locationค่าฟิลด์สำหรับการเปลี่ยนเส้นทางอัตโนมัติ เพย์โหลดการตอบกลับของเซิร์ฟเวอร์มักจะมีไฮเปอร์เท็กซ์โน้ตสั้น ๆ พร้อมไฮเปอร์ลิงก์ไปยัง URI ที่แตกต่างกัน

หมายเหตุ:ด้วยเหตุผลทางประวัติศาสตร์ตัวแทนผู้ใช้อาจเปลี่ยนวิธีการร้องขอจากPOSTเป็นGETสำหรับการร้องขอในภายหลัง หากพฤติกรรมนี้ไม่เป็นที่ต้องการ307สามารถใช้รหัสสถานะ (การเปลี่ยนเส้นทางชั่วคราว) แทนได้

ตามเอกสารเว็บ MDN จาก Mozillaกรณีการใช้งานทั่วไปสำหรับ302:

หน้าเว็บไม่สามารถใช้งานได้ชั่วคราวเนื่องจากสาเหตุที่ไม่คาดฝัน ด้วยวิธีนี้เครื่องมือค้นหาจะไม่อัปเดตลิงก์

รหัสสถานะอื่น ๆ สำหรับการเปลี่ยนเส้นทาง

RFC 7231กำหนดรหัสสถานะต่อไปนี้สำหรับการเปลี่ยนเส้นทาง:

  • 301 (ย้ายถาวร)
  • 302 (พบ)
  • 307 (เปลี่ยนเส้นทางชั่วคราว)

RFC 7238ถูกสร้างขึ้นเพื่อกำหนดรหัสสถานะอื่นสำหรับการเปลี่ยนเส้นทาง:

  • 308 (เปลี่ยนเส้นทางถาวร)

อ้างอิงคำตอบนี้สำหรับรายละเอียดเพิ่มเติม


2
ความเจ็บปวดของฉันตลอดสองวันมันเกินเลยสำหรับคุณแล้ว ( Locationส่วนหัวคือสิ่งที่ช่วยฉัน) ปรากฎว่าฉันเรียกใช้บริการhttpและพวกเขาย้ายไปhttpsสิ่งที่ฉันได้รับการตอบสนองคือ302ทันทีที่ฉันอ่านLocationส่วนหัวที่นี่ฉันเห็นความhttp/httpsแตกต่าง ขอบคุณ!
Eugene

ฉันมีเหตุผลเดียวกันกับข้อผิดพลาดนี้ Javascript ของฉันชี้ไปที่ตำแหน่ง https ที่ไม่ถูกต้องและทำให้การเปลี่ยนเส้นทางล้มเหลว ขอบคุณสำหรับความคิดเห็น
สูงสุด

25

วิธีง่ายๆในการดูการเปลี่ยนเส้นทาง HTTP 301 เทียบกับ 302 คือ:

สมมติว่าคุณมีบุ๊กมาร์กเพื่อ " http://sample.com/sample " คุณใช้เบราว์เซอร์เพื่อไปที่นั่น

จุดนี้ 302 เปลี่ยนเส้นทางไปยัง URL อื่นหมายความว่าคุณควรเก็บบุ๊กมาร์กไว้ที่ " http://sample.com/sample " เนื่องจาก URL ปลายทางอาจมีการเปลี่ยนแปลงในอนาคต

การเปลี่ยนเส้นทาง 301 ไปยัง URL อื่นหมายความว่าบุ๊กมาร์กของคุณควรเปลี่ยนให้ชี้ไปที่ URL ใหม่เนื่องจากเป็นการเปลี่ยนเส้นทางแบบถาวร


9

จากRFC 2616 (ข้อกำหนด Hypertext Transfer Protocol) :

10.3.3 302 พบ

   ทรัพยากรที่ร้องขออยู่ชั่วคราวภายใต้ URI อื่น
   เนื่องจากการเปลี่ยนเส้นทางอาจมีการเปลี่ยนแปลงในบางครั้งไคลเอ็นต์จึงควร
   ใช้ Request-URI ต่อไปสำหรับคำขอในอนาคต การตอบสนองนี้
   สามารถแคชได้เฉพาะเมื่อระบุโดยส่วนหัว Cache-Control หรือ Expires
   สนาม

   URI ชั่วคราวควรได้รับจากฟิลด์ Location ใน
   คำตอบ เว้นแต่วิธีการร้องขอคือ HEAD เอนทิตีของ
   การตอบกลับควรมีบันทึกไฮเปอร์เท็กซ์สั้น ๆ ที่มีไฮเปอร์ลิงก์ไปยัง
   URI ใหม่

ที่มา:

http://www.ietf.org/rfc/rfc2616.txt


6

จากWikipedia :

รหัสสถานะการตอบกลับ HTTP 302 Found เป็นวิธีที่ใช้กันทั่วไปในการเปลี่ยนเส้นทาง เป็นตัวอย่างของการปฏิบัติทางอุตสาหกรรมที่ขัดแย้งกับมาตรฐาน



5

302 คือคำตอบที่ระบุการเปลี่ยนแปลงตำแหน่งทรัพยากร - "พบ"

URL ที่ทรัพยากรควรจะอยู่ในขณะนี้ควรอยู่ในส่วนหัว "ตำแหน่ง" ของการตอบกลับ

ไคลเอ็นต์ที่ร้องขอควรดำเนินการ "ข้าม" (ส่งคำขอใหม่ไปยัง URL ของทรัพยากรในฟิลด์ส่วนหัวตำแหน่งการตอบกลับ)


5

ในแง่ของ SEO 301 และ 302 ดีทั้งคู่ขึ้นอยู่กับสถานการณ์

หากสามารถส่งคืนได้เพียงเวอร์ชันเดียว (กล่าวคืออีกเวอร์ชันหนึ่งจะเปลี่ยนเส้นทางไป) ก็เยี่ยมมาก! พฤติกรรมนี้มีประโยชน์เพราะจะช่วยลดเนื้อหาที่ซ้ำกัน ในกรณีเฉพาะของการเปลี่ยนเส้นทางไปยัง URL สแลชต่อท้ายผลการค้นหาของเรามักจะแสดงเวอร์ชันของ URL ที่มีรหัสการตอบกลับ 200 รหัส (โดยส่วนใหญ่มักเป็น URL เครื่องหมายทับ) ไม่ว่าการเปลี่ยนเส้นทางจะเป็น 301 หรือ 302 ก็ตาม


3

รหัส HTTP 302 สำหรับการเปลี่ยนเส้นทางดูhttp://en.wikipedia.org/wiki/HTTP_302

มันบอกให้เรียกดูที่อ่านหน้าไปที่อื่นและโหลดหน้าอื่น การใช้งานเป็นเรื่องธรรมดามาก


1

ตามRFC 1945 / Hypertext Transfer Protocol - HTTP / 1.0 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • รหัส 302 บ่งชี้ว่ามีการเปลี่ยนเส้นทางชั่วคราว
  • หนึ่งในคุณสมบัติที่โดดเด่นที่สุดที่ทำให้เกิดความแตกต่างจากการเปลี่ยนเส้นทาง 301 คือในกรณีของการเปลี่ยนเส้นทาง 302 จุดแข็งของ SEO จะไม่ถูกถ่ายโอนไปยัง URL ใหม่
  • เนื่องจากการเปลี่ยนเส้นทางนี้ได้รับการออกแบบมาเพื่อใช้เมื่อจำเป็นต้องเปลี่ยนเส้นทางเนื้อหาไปยังหน้าที่จะไม่เป็นหน้าสุดท้าย ดังนั้นเมื่อยกเลิกการเปลี่ยนเส้นทางแล้วหน้าเดิมจะไม่สูญเสียตำแหน่งในเครื่องมือค้นหาของ Google

ตัวอย่าง: -แม้ว่าเราจะพบว่าตัวเองต้องการการเปลี่ยนเส้นทาง 302 ไม่ใช่เรื่องปกติ แต่ตัวเลือกนี้มีประโยชน์มากในบางกรณี นี่เป็นกรณีที่พบบ่อยที่สุด:

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

การเปลี่ยนเส้นทาง 302 คือรหัสที่แจ้งให้ผู้เยี่ยมชมทราบถึง URL ที่เฉพาะเจาะจงว่าหน้านั้นถูกย้ายชั่วคราวโดยนำพวกเขาไปยังตำแหน่งใหม่โดยตรง

  • กล่าวอีกนัยหนึ่งการเปลี่ยนเส้นทาง 302 จะเปิดใช้งานเมื่อโรบ็อตของ Google หรือเครื่องมือค้นหาอื่น ๆ ขอให้โหลดหน้าเฉพาะ ในขณะนั้นด้วยการเปลี่ยนเส้นทางนี้เซิร์ฟเวอร์จะส่งคืนการตอบกลับอัตโนมัติที่ระบุ URL ใหม่

  • ด้วยวิธีนี้จะหลีกเลี่ยงข้อผิดพลาดและความน่ารำคาญทั้งต่อเครื่องมือค้นหาและผู้ใช้รับประกันการใช้งานที่ราบรื่น

สำหรับรายละเอียดเพิ่มเติมโปรดดูบทความนี้


0

รหัสสถานะ 302 คือรหัสสถานะการตอบกลับ HTTP ที่ระบุว่าทรัพยากรที่ร้องขอถูกย้ายไปยัง URI อื่นชั่วคราว เนื่องจากตำแหน่งหรือคำสั่งการเปลี่ยนเส้นทางปัจจุบันอาจมีการเปลี่ยนแปลงในอนาคตไคลเอ็นต์ที่ได้รับรหัสตอบกลับ 302 Found ควรใช้ URI เดิมต่อไปสำหรับคำขอในอนาคต

การตอบสนอง HTTP พร้อมรหัสสถานะนี้จะให้ URL เพิ่มเติมในตำแหน่งฟิลด์ส่วนหัว นี่คือการเชิญตัวแทนผู้ใช้ (เช่นเว็บเบราว์เซอร์) ให้ทำการร้องขอครั้งที่สองหรือเหมือนกันกับ URL ใหม่ที่ระบุในฟิลด์ตำแหน่ง ผลลัพธ์สุดท้ายคือการเปลี่ยนเส้นทางไปยัง URL ใหม่


0

สำหรับใครก็ตามที่อาจสงสัยเกี่ยวกับการตั้งชื่อฉันจะเพิ่มว่าอาจเรียกว่า "พบ" เนื่องจากทรัพยากรหลัก (เช่นหน้าเว็บส่วนตัว) ที่ผู้ใช้ต้องการรับไม่สามารถใช้งานได้ในขณะนั้น (เช่น ผู้ใช้ยังไม่ได้พิสูจน์ตัวตน) ดังนั้นเซิร์ฟเวอร์จึงพบทรัพยากรใหม่ที่ผู้ใช้สามารถรับได้ (ซึ่งเป็นหน้าล็อกอินในกรณีการใช้งานทั่วไป)

นอกจากนี้ยัง "หลงทางและพบ" ในลักษณะซ่อนหาซึ่งหมายถึงทรัพยากรที่สูญหายภายใต้สถานะ 302 จะสูญหายไปเพียงชั่วคราวเท่านั้นไม่ควรสูญหายตลอดไป (เว้นแต่ผู้เล่นจะมีเจตนาที่ไม่ดี;))

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.