ไฟล์ Manifest - แหล่งข้อมูลที่เข้าถึงได้ทางเว็บ

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

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

การประกาศไฟล์ Manifest

ใช้พร็อพเพอร์ตี้ web_accessible_resources ของไฟล์ Manifest เพื่อประกาศทรัพยากรที่เปิดเผยและ มีที่มาอะไร พร็อพเพอร์ตี้นี้เป็นอาร์เรย์ของออบเจ็กต์ที่ประกาศกฎการเข้าถึงทรัพยากร ออบเจ็กต์แต่ละรายการ แมปอาร์เรย์ของทรัพยากรส่วนขยายกับอาร์เรย์ของ URL และ/หรือรหัสส่วนขยายที่เข้าถึงทรัพยากรเหล่านั้นได้

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ],
      "use_dynamic_url": true
    }
  ],
  ...
}

ออบเจ็กต์แต่ละรายการในอาร์เรย์จะมีองค์ประกอบต่อไปนี้

"resources"
อาร์เรย์ของสตริง โดยแต่ละสตริงมีเส้นทางที่เกี่ยวข้องไปยังทรัพยากรที่ระบุจากไดเรกทอรีรากของส่วนขยาย ทรัพยากรอาจมีเครื่องหมายดอกจัน (*) สำหรับการจับคู่ไวลด์การ์ด เช่น "/images/*" จะแสดงทุกอย่างในไดเรกทอรี images/ ของส่วนขยายแบบซ้ำ ขณะที่ "*.png" จะแสดงไฟล์ PNG ทั้งหมด
"matches"
อาร์เรย์สตริงแต่ละรายการมีรูปแบบการจับคู่ที่ระบุเว็บไซต์ที่เข้าถึงชุดทรัพยากรนี้ได้ ระบบจะใช้เฉพาะต้นทางเพื่อจับคู่ URL โดยต้นทางจะรวมการจับคู่โดเมนย่อยด้วย Google Chrome แสดง "รูปแบบการจับคู่ไม่ถูกต้อง" หากรูปแบบมีเส้นทางอื่นที่ไม่ใช่ "/*"
"extension_ids"
อาร์เรย์สตริงแต่ละรายการมีรหัสของส่วนขยายที่เข้าถึงทรัพยากรได้
"use_dynamic_url"
หากเป็นจริง อนุญาตให้เข้าถึงเฉพาะทรัพยากรผ่านรหัสแบบไดนามิกเท่านั้น ระบบจะสร้างรหัสแบบไดนามิกขึ้นต่อเซสชัน ซึ่งหมายความว่าระบบจะสร้างคีย์ใหม่เมื่อเบราว์เซอร์รีสตาร์ทหรือส่วนขยายโหลดซ้ำ

องค์ประกอบแต่ละรายการต้องมีองค์ประกอบ "resources" และองค์ประกอบ "matches" หรือ "extension_ids" การดำเนินการนี้จะสร้างการจับคู่ที่แสดงทรัพยากรที่ระบุไปยังหน้าเว็บที่ตรงกับรูปแบบหรือส่วนขยายที่มีรหัสตรงกัน องค์ประกอบ "use_dynamic_url" เป็นค่าที่ไม่บังคับ

แหล่งข้อมูลมีอยู่ในหน้าเว็บผ่านทาง URL chrome-extension://[PACKAGE ID]/[PATH] ซึ่งสร้างขึ้นด้วย runtime.getURL() ทรัพยากรมีส่วนหัว CORS ที่เหมาะสม จึงสามารถมีพร้อมใช้งาน ผ่าน fetch()

ระบบจะบล็อกการไปยังส่วนขยายจากต้นทางของเว็บ เว้นแต่ว่าส่วนขยายจะแสดงอยู่ในรายการที่เข้าถึงได้ทางเว็บ โปรดทราบกรณีพิเศษต่อไปนี้

  • เมื่อส่วนขยายใช้ webRequest API เพื่อเปลี่ยนเส้นทางคำขอทรัพยากรสาธารณะไปยังทรัพยากรที่เข้าถึงทางเว็บไม่ได้ ระบบจะบล็อกคำขอดังกล่าวด้วย
  • ข้อความข้างต้นจะมีผลแม้ว่าส่วนขยายการเปลี่ยนเส้นทางจะเป็นเจ้าของทรัพยากรที่เข้าถึงไม่ได้ทางเว็บก็ตาม
  • ระบบจะบล็อกการนำทางในโหมดไม่ระบุตัวตน เว้นแต่จะกำหนดค่าของช่อง"incognito" เป็น "split"

ทั้งนี้ ไม่จำเป็นต้องอนุญาตสคริปต์เนื้อหา

ตัวอย่าง

ตัวอย่างทรัพยากรที่เข้าถึงได้ในเว็บสาธิตการใช้องค์ประกอบนี้ในส่วนขยายที่ใช้งานได้