ทรัพยากรที่เข้าถึงได้จากเว็บคือไฟล์ภายในส่วนขยายที่หน้าเว็บหรืออื่นๆ สามารถเข้าถึงได้ ส่วนขยาย โดยทั่วไปแล้ว ส่วนขยายจะใช้ฟีเจอร์นี้เพื่อแสดงรูปภาพหรือชิ้นงานอื่นๆ ที่ต้องโหลดในหน้าเว็บ แต่ชิ้นงานใดก็ตามที่รวมอยู่ในกลุ่มของส่วนขยายจะเข้าถึงได้ทางเว็บ
โดยค่าเริ่มต้น ทรัพยากรทั้งหมดจะเข้าถึงเว็บไม่ได้ เนื่องจากจะทำให้เว็บไซต์ที่เป็นอันตรายใช้ลายนิ้วมือกับส่วนขยายที่ผู้ใช้ติดตั้งไว้ได้ หรือแสวงหาประโยชน์จากช่องโหว่ (เช่น ข้อบกพร่อง 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"
ทั้งนี้ ไม่จำเป็นต้องอนุญาตสคริปต์เนื้อหา
ตัวอย่าง
ตัวอย่างทรัพยากรที่เข้าถึงได้ในเว็บสาธิตการใช้องค์ประกอบนี้ในส่วนขยายที่ใช้งานได้