“ ขอบคุณสำหรับการโพสต์ โปรดรอสักครู่ในขณะที่คุณถูกเปลี่ยนเส้นทาง” จำเป็น?


11

ขอบคุณสำหรับการโพสต์ โปรดรอสักครู่ในขณะที่คุณถูกเปลี่ยนเส้นทาง

หากคุณไม่ได้รับการเปลี่ยนเส้นทางโดยอัตโนมัติโปรดคลิกที่นี่

คุณอาจคุ้นเคยกับข้อความเช่นนี้โดยเฉพาะเมื่อใช้งานเว็บในยุค 90 หรือต้นยุค 2000 ในโครงการของฉันฉันไม่เคยพบเหตุผลที่จะทำให้ผู้ใช้รอ 2-3 วินาทีขณะที่พวกเขาถูกเปลี่ยนเส้นทางหลังจากการลงทะเบียนหรือโพสต์บางอย่างเช่น แต่รูปแบบนี้เกิดขึ้นตลอดเวลาแม้ในซอฟต์แวร์เว็บยอดนิยมเช่น PHPBB

คำถามของฉันคือการเปลี่ยนเส้นทางยังคงมีสถานที่ / ต้องการในการพัฒนาเว็บ (ajaxy) ที่ทันสมัยหรือไม่? มีสถานการณ์ใดบ้างที่ต้องการการเปลี่ยนเส้นทางอย่างนี้ทำให้ผู้ใช้เกิดความรำคาญในที่สุดและเหตุผลทางเทคนิคเบื้องหลังพวกเขาคืออะไร? ทำไมไม่เปลี่ยนเส้นทางทันทีหากจำเป็นต้องเปลี่ยนเส้นทาง?


แค่เดา: บางทีมันอาจจะเกี่ยวข้องกับการป้องกันการกระทำหรือสคริปต์บอท? มีวิธีที่ดีกว่าในการทำเช่นนั้น (Captchas ฯลฯ )

เนื่องจากคำขอของผู้ใช้ฉันเปลี่ยนการติดตั้ง PHPBB เพื่อเปลี่ยนเส้นทางทันที ใช้การเปลี่ยนแปลงบรรทัดเพียงสองสามครั้งและทำงานได้อย่างสมบูรณ์แบบ
AndréParamés

@Martin: อาจเป็นไปได้ แต่ถ้าเป็นเช่นนั้นจะเข้าใจผิดอย่างสมบูรณ์เนื่องจากบอทใด ๆ สามารถติดตามการเปลี่ยนเส้นทางเหมือนเบราว์เซอร์ใด ๆ (โดยเฉพาะอย่างยิ่งถ้ามีส่วนหัวของที่ตั้งเช่นใน PHPBB)
AndréParamés

คำตอบ:


3

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

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

การเปลี่ยนเส้นทางยังคงมีสถานที่ / ความต้องการในการพัฒนาเว็บไซต์ที่ทันสมัย ​​(ajaxy) หรือไม่?

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

ทำไมไม่เปลี่ยนเส้นทางทันทีหากจำเป็นต้องเปลี่ยนเส้นทาง?

ควรเปลี่ยนเส้นทางทันทีหากเป้าหมายคือเพื่อป้องกันการส่งแบบฟอร์มหลายครั้ง - ในกรณีของการเปลี่ยนเส้นทางที่กำหนดเวลาบางทีพวกเขากำลังมุ่งไปยังเซิร์ฟเวอร์ที่เฉื่อยพวกเขาไม่ได้คำนึงถึงการล็อคตามเซสชันหรือพวกเขาพยายาม แก้ปัญหาที่ลึกลับยิ่งขึ้น


"เป็นการป้องกันการร้องขอซ้ำ" --- การเปลี่ยนเส้นทางตำแหน่งเงียบก็ทำได้เช่นกัน "การเปลี่ยนเส้นทางควรจะออกในทันทีหากเป้าหมายคือเพื่อป้องกันการส่งหลายรูปแบบ" --- ไม่ควรเพราะF5ในStand byหน้าจะทำให้เกิดการส่งโพสต์อีกครั้ง
zerkms

@zerkms - ฉันแนะนำให้เปลี่ยนเส้นทางไปยังตำแหน่งใหม่ก่อนที่จะส่งเนื้อหาตอบกลับ (เช่นไม่มีหน้า "สแตนด์บาย")
danlefree

5

ก่อนอื่นเบราว์เซอร์ทั้งหมดจะไม่เปลี่ยนเส้นทางเมื่อได้รับส่วนหัว Location ประการที่สองไม่ใช่เบราว์เซอร์ทั้งหมดที่จะเปลี่ยนเส้นทางด้วย Javascript เนื่องจากถูกปิดใช้งาน ประการที่สามไม่ใช่ทุกเบราว์เซอร์ที่จะสนับสนุนเมตาแท็กรีเฟรช กรณีใด ๆ เหล่านี้อาจหายากมากดังนั้นจึงอาจไม่สำคัญ แต่ถึงกระนั้นคุณก็สามารถทับวิธีการเหล่านี้ทั้งหมดที่ฉันคิด

วิธีที่หน้า PHPBB ทำ (รอ 5 วินาทีหรือบางอย่าง) ไม่จำเป็นเลย มันควรจะเปลี่ยนเส้นทางทันทีและหากไม่เป็นเช่นนั้นก็จะแสดงหน้า HTML (ซึ่งมี meta-refresh และ Javascript บนมันและข้อความพร้อมลิงค์) หลังจากส่งส่วนหัว แทบไม่มีโอกาสเลยที่หน้านี้จะแสดงโดยเบราว์เซอร์ปกติหากตั้งโปรแกรมไว้อย่างถูกต้อง


"ก่อนอื่นเบราว์เซอร์ทั้งหมดจะไม่เปลี่ยนเส้นทางเมื่อได้รับส่วนหัว Location" [อ้างอิงที่จำเป็น]
Jon Cram

@Jon Cram: เว็บพร็อกซีทางเทคนิคและส่วนขยายอาจรบกวนส่วนหัวของตำแหน่ง เบราว์เซอร์อาจเป็นตัวแทนผู้ใช้ที่ไม่ได้มาตรฐานและเจ้าของไซต์พยายามกีดกันพวกเขาตามลิงก์ภายนอกโดยนำเสนอสิ่งที่ผู้ใช้สามารถติดตามได้อย่างง่ายดาย
Brian Lyttle

ฉันกำลังอ่านคุณอย่างถูกต้องในการเรียกheader()ฟังก์ชั่นของ PHP ที่จริงอาจถูกละเว้น? เรื่องนี้ทำให้ฉันกังวลอย่างมาก ฉันได้รับทราบแล้วเกี่ยวกับวิธีการเปลี่ยนเส้นทาง HTML และ JS และวิธีที่เชื่อถือได้น้อยลง แต่ฉันไม่เคยคิดเลยว่าจะมีการข้ามส่วนหัว HTTP ไปยังฝั่งเซิร์ฟเวอร์
Lotus Notes

1
@Lusus หลายคนไม่ส่งส่วนหัวอย่างถูกต้องซึ่งเป็นปัญหาใหญ่ คุณควรจะรวมรหัส 3xx ไว้ก่อนหน้านี้ซึ่งหลาย ๆ คนไม่ได้ทำ เบราว์เซอร์อาจเพิกเฉยต่อคำขอนี้หากต้องการ (และฉันแน่ใจว่าลูกค้าบางคนทำไม่ได้ว่าเบราว์เซอร์หลัก)
Joe Phillips

โปรดทราบว่าส่วนหัว Location ควรส่งURL แบบสัมบูรณ์แต่สิ่งนี้มักจะถูกละเว้น
Piskvor ออกจากอาคารใน

3

ฉันส่งการเปลี่ยนเส้นทางในส่วนหัวของการตอบกลับพร้อมรหัสสถานะ HTTP ที่เหมาะสมเสมอ (เช่น 301 หรือ 302 - ดูhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html ) ซึ่งส่งผลให้เกิดการเปลี่ยนเส้นทางทันที ฉันไม่ทราบถึงเหตุผลทางเทคนิคที่ดีว่าทำไมมีคนแสดง "โปรดรอในขณะที่คุณเปลี่ยนเส้นทางหน้าเว็บ"


1

สาเหตุหลักของการทำเช่นนี้คือมีการบันทึกบนไซต์ที่คุณถูกเปลี่ยนเส้นทาง หน้านี้สามารถโหลด Google Analytics ได้ แต่ข้อมูลก็จะอยู่ในเว็บล็อกด้วยเช่นกัน

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

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


โดยสรุปแล้วรูปแบบนี้จำเป็นเฉพาะถ้าคุณต้องการติดตามการกระทำของผู้ใช้ในเว็บไซต์?
Lotus Notes

0

นอกจากนี้ยังช่วยให้ปุ่มย้อนกลับเรียงลำดับการทำงานอย่างเหมาะสม

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