เวลาพัฒนาเว็บ เรามักต้องแสดงหน้าจอที่ต่างกันตามชนิดของเว็บเบราว์เซอร์หรือระบบปฏิบัติการ หรือไม่ก็ต้องนำแพลตฟอร์มของผู้เข้าชมไปใช้ทำสถิติอยู่บ่อย ๆ หนึ่งในสิ่งที่ใช้กันก็คือสตริง [User Agent](User Agent) ที่เว็บเบราว์เซอร์ใส่เพิ่มเข้าไปใน HTTP request header นั่นเอง วิธีแยกแพลตฟอร์มและเบราว์เซอร์ผ่านสิ่งนี้แม้จะถูกใช้อย่างแพร่หลาย แต่สตริงนี้ก็ทั้งสับสนและอ่านเข้าใจได้ยากมานานแล้วตั้งแต่ยุค Netscape ด้วยเหตุผลด้านความเข้ากันได้ต่าง ๆ ทุกวันนี้ยิ่งไม่ต้องพูดถึง เพราะแทบทุกเบราว์เซอร์ต่างทำตัวเหมือนเป็นเบราว์เซอร์อื่นกันหมด ตัวอย่างเช่น สตริง User Agent ของเบราว์เซอร์ตัวหนึ่งที่ผมใช้อยู่มีดังนี้
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4003.0 Safari/537.36 Edg/81.0.381.0
ถ้ามีแค่สตริง User Agent นี้โดยไม่มีความรู้พื้นฐานอื่นเลย ก็คงไม่มีทางรู้ได้ว่ามันคือเบราว์เซอร์อะไรกันแน่ Mozilla Firefox? Chrome? Safari? Edge? คำตอบคือ Microsoft Edge Dev รุ่นหนึ่ง อย่างน้อยแพลตฟอร์มที่ใช้งานอยู่อาจพอเดาได้บ้าง แต่ถ้าจะ parse สตริงนี้เพื่อเอาไปใช้แยกแพลตฟอร์มจริง ๆ ก็คงปวดหัวไม่น้อย
เพื่อแก้ปัญหานี้ Google ได้เสนอให้เลิกใช้สตริง User Agent แบบค่อยเป็นค่อยไป และหันไปใช้สิ่งที่เรียกว่า [Client Hints](Client Hints) แทน โดย Client Hints หมายถึงการแยกข้อมูลที่ปัจจุบันอยู่ในสตริง User Agent ออกเป็น 7 ฟิลด์ (ชื่อเบราว์เซอร์/เวอร์ชันหลักของเบราว์เซอร์/เวอร์ชันเต็มของเบราว์เซอร์/ชื่อและเวอร์ชันของแพลตฟอร์ม/สถาปัตยกรรมของแพลตฟอร์ม/ชื่อรุ่นฮาร์ดแวร์/เป็นมือถือหรือไม่) แล้วเพิ่มเข้าไปใน HTTP request header
Google ระบุว่าภายในปีนี้ (2020) จะตรึงสตริง User Agent ของ Google Chrome ไม่ให้เปลี่ยนแปลงอีกต่อไป (ลบออกไปเลยไม่ได้เพราะมีปัญหาด้านความเข้ากันได้) และจะเริ่มใช้ Client Hints แทน ขณะที่ผู้พัฒนาเว็บเบราว์เซอร์รายใหญ่อื่น ๆ เช่น Mozilla, Apple และ MS ก็ดูเหมือนมีแผนจะรองรับแนวทางนี้เช่นกัน แต่ยังไม่มีรายละเอียดที่ชัดเจนออกมา หากเว็บเบราว์เซอร์อื่นเริ่มใช้ด้วย การแพร่หลายของแนวทางนี้ก็น่าจะไม่ใช่เรื่องยาก อย่างไรก็ตาม เมื่อมองจากท่าทีของ Google ที่เลือกปฏิบัติต่อบริการของตนกับเบราว์เซอร์ที่ไม่ใช่ของตัวเอง ก็ยากจะต้อนรับข้อเสนอนี้อย่างเต็มที่นัก
รายละเอียดข้อเสนอ Client Hints ของ Google :
https://wicg.github.io/ua-client-hints/
ประวัติของสตริง User Agent :
ยังไม่มีความคิดเห็น