Signed HTTP Exchange

Kinuko Yasuda

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

Signed HTTP Exchange ทำงานอย่างไร เทคโนโลยีนี้ช่วยให้ผู้เผยแพร่โฆษณาลงนามใน HTTP Exchange รายการเดียว (นั่นคือคู่คําขอ/การตอบกลับ) ในลักษณะที่ Signed Exchange สามารถแสดงจากเซิร์ฟเวอร์แคชใดก็ได้ เมื่อเบราว์เซอร์โหลด Signed Exchange นี้ ก็จะแสดง URL ของผู้เผยแพร่โฆษณาในแถบที่อยู่ได้อย่างปลอดภัย เนื่องจากลายเซ็นใน Exchange เป็นหลักฐานเพียงพอว่าเนื้อหานั้นมาจากแหล่งที่มาของผู้เผยแพร่โฆษณา

Signed Exchange: สาระสำคัญ

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

  • การเรียกข้อมูลล่วงหน้าเพื่อรักษาความเป็นส่วนตัว: แม้ว่าการเรียกข้อมูลล่วงหน้าของทรัพยากร (เช่น โดยลิงก์ rel=prefetch) สำหรับการไปยังส่วนถัดไปจะทำให้การไปยังส่วนถัดไปนั้นเร็วขึ้นมาก แต่ก็มีข้อเสียด้านความเป็นส่วนตัวด้วย ตัวอย่างเช่น การโหลดทรัพยากรล่วงหน้าสำหรับการไปยังส่วนต่างๆ ข้ามแหล่งที่มาจะเปิดเผยให้เว็บไซต์ปลายทางทราบว่าผู้ใช้อาจสนใจข้อมูลบางอย่าง แม้ว่าผู้ใช้จะไม่เข้าชมเว็บไซต์ดังกล่าวในท้ายที่สุดก็ตาม ในทางกลับกัน SXG อนุญาตให้โหลดทรัพยากรข้ามแหล่งที่มาล่วงหน้าจากแคชที่รวดเร็วโดยไม่ต้องเข้าถึงเว็บไซต์ปลายทางเลย จึงสื่อสารเฉพาะความสนใจของผู้ใช้ในกรณีที่มีการไปยังส่วนต่างๆ เราเชื่อว่าการอัปเดตนี้จะเป็นประโยชน์สําหรับเว็บไซต์ที่มีเป้าหมายเพื่อส่งผู้ใช้ไปยังเว็บไซต์อื่น โดยเฉพาะอย่างยิ่ง Google วางแผนที่จะใช้รูปแบบนี้ในหน้าผลการค้นหาของ Google เพื่อปรับปรุง URL ของ AMP และเพิ่มความเร็วในการคลิกผลการค้นหา

  • ประโยชน์ของ CDN โดยไม่ต้องโอนการควบคุมคีย์ส่วนตัวของใบรับรอง เนื้อหาที่ได้รับความนิยมอย่างฉับพลัน (เช่น มีการลิงก์จากหน้าแรกใน reddit.com) มักจะทำให้เว็บไซต์ที่แสดงเนื้อหานั้นทำงานหนักเกินไป และหากเว็บไซต์มีขนาดเล็ก ก็มักจะทําให้เว็บไซต์ทำงานช้าลงหรือใช้งานไม่ได้ชั่วคราว สถานการณ์นี้สามารถหลีกเลี่ยงได้หากมีการแชร์เนื้อหาโดยใช้เซิร์ฟเวอร์แคชที่รวดเร็วและมีประสิทธิภาพ และ SXG ช่วยให้การดำเนินการนี้เป็นไปได้โดยไม่ต้องแชร์กุญแจ TLS

การลองใช้ Signed Exchange

การแลกเปลี่ยนที่ลงชื่อเข้าใช้พร้อมใช้งานใน Chrome เวอร์ชัน 73 ขึ้นไป และก่อนหน้านี้มีให้บริการเป็นเวอร์ชันทดลองของต้นทาง

การสร้าง SXG

หากต้องการสร้าง SXG สำหรับต้นทาง (ในฐานะผู้เผยแพร่โฆษณา) คุณต้องมีคีย์ใบรับรองเพื่อลงนามในลายเซ็น และใบรับรองต้องมีส่วนขยาย "CanSignHttpExchanges" พิเศษเพื่อประมวลผลเป็น SXG ที่ถูกต้อง ตั้งแต่เดือนพฤศจิกายน 2018 DigiCert เป็น CA เพียงรายเดียวที่รองรับส่วนขยายนี้ และคุณสามารถขอใบรับรองที่ใช้งานได้กับ SXG จากหน้านี้

เมื่อได้รับใบรับรองสำหรับ SXG แล้ว คุณสามารถสร้าง SXG ของคุณเองได้โดยใช้เครื่องมือสร้างข้อมูลอ้างอิงที่เผยแพร่ใน GitHub

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

การทดสอบฟีเจอร์ในเครื่อง

หากต้องการสร้าง SXG เพื่อวัตถุประสงค์ในการทดสอบ คุณสามารถสร้างใบรับรองที่ลงนามด้วยตนเองและเปิดใช้ chrome://flags/#allow-sxg-certs-without-extension เพื่อให้ Chrome ประมวลผล SXG ที่สร้างขึ้นด้วยใบรับรองดังกล่าวได้โดยไม่ต้องมีส่วนขยายพิเศษ

โค้ดต่อไปนี้ควรใช้งานได้หากเซิร์ฟเวอร์ ใบรับรอง และ SXG ได้รับการตั้งค่าอย่างถูกต้อง

<!-- prefetch the sample.sxg -->
<link rel="prefetch" href="https://your-site.com/sample.sxg" />

<!-- clicking the link below should make Chrome navigate to the inner
     response of sample.sxg (and the prefetched SXG is used) -->
<a href="https://your-site.com/sample.sxg">Sample</a>

โปรดทราบว่าแท็กแอตทริบิวต์ Anchor (<a>) และ link rel=prefetch ใน Chrome เวอร์ชัน 73 ขึ้นไปเท่านั้นที่รองรับ SXG นอกจากนี้ โปรดทราบว่าความถูกต้องของลายเซ็นจะจำกัดอยู่ที่ 7 วันตามข้อกำหนด ดังนั้นเนื้อหาที่ลงนามจะหมดอายุค่อนข้างเร็ว

การให้ความคิดเห็น

เราอยากทราบความคิดเห็นของคุณเกี่ยวกับการทดสอบนี้ที่ webpackage-dev@chromium.org นอกจากนี้ คุณยังเข้าร่วมการสนทนาเกี่ยวกับข้อกำหนด หรือรายงานข้อบกพร่องของ Chrome ให้กับทีมได้ด้วย ความคิดเห็นของคุณจะช่วยกระบวนการมาตรฐานเป็นอย่างมาก และยังช่วยเราแก้ปัญหาการติดตั้งใช้งานด้วย

ความคิดเห็น