ทรัพยากรที่เข้าถึงได้บนเว็บคือไฟล์ภายในส่วนขยายที่หน้าเว็บหรือส่วนขยายอื่นๆ เข้าถึงได้ โดยปกติแล้ว ส่วนขยายจะใช้ฟีเจอร์นี้เพื่อแสดงรูปภาพหรือเนื้อหาอื่นๆ ที่ต้องโหลดในหน้าเว็บ แต่เนื้อหาที่รวมอยู่ในแพ็กเกจของส่วนขยายจะทำให้เข้าถึงได้บนเว็บ
โดยค่าเริ่มต้น ไม่สามารถเข้าถึงทรัพยากรจากเว็บ เนื่องจากจะทำให้เว็บไซต์ที่เป็นอันตรายสามารถพิมพ์ลายนิ้วมือส่วนขยายที่ผู้ใช้ติดตั้งหรือใช้ประโยชน์จากช่องโหว่ (เช่น ข้อบกพร่อง XSS) ในส่วนขยายที่ติดตั้ง เฉพาะหน้าหรือสคริปต์ที่โหลดจากต้นทางของส่วนขยายเท่านั้น ที่สามารถเข้าถึงทรัพยากรของส่วนขยายได้
การประกาศไฟล์ Manifest
ใช้พร็อพเพอร์ตี้ไฟล์ Manifest web_accessible_resources
เพื่อประกาศทรัพยากรที่เปิดเผยและแหล่งที่มา พร็อพเพอร์ตี้นี้คืออาร์เรย์ของออบเจ็กต์ที่ประกาศกฎการเข้าถึงทรัพยากร แต่ละออบเจ็กต์แสดงทรัพยากรส่วนขยายจำนวนหนึ่งและต้องระบุค่าสำหรับคีย์ matches
หรือ extension_ids
อย่างน้อย 1 รายการเพื่อระบุต้นทางที่เข้าถึงทรัพยากรเหล่านี้ได้
{
...
"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/*" ]
}
],
...
}
แต่ละออบเจ็กต์ในอาร์เรย์มีองค์ประกอบต่อไปนี้
"resources"
- อาร์เรย์ของสตริง แต่ละสตริงมีเส้นทางสัมพัทธ์ไปยังทรัพยากรที่ระบุจากไดเรกทอรีรากของส่วนขยาย ทรัพยากรอาจมีเครื่องหมายดอกจัน (
*
) สําหรับการจับคู่ไวลด์การ์ด ตัวอย่างเช่น"/images/*"
จะแสดงทุกอย่างในไดเรกทอรีimages/
ของส่วนขยายแบบซ้ำๆ ขณะที่"*.png"
แสดงไฟล์ PNG ทั้งหมด "matches"
- อาร์เรย์ของสตริง โดยแต่ละสตริงมีรูปแบบการจับคู่ซึ่งระบุเว็บไซต์ที่เข้าถึงทรัพยากรชุดนี้ได้ ระบบจะใช้เฉพาะต้นทางในการจับคู่ URL ต้นทางมีการจับคู่โดเมนย่อย Google Chrome จะแสดงข้อผิดพลาด "รูปแบบการจับคู่ไม่ถูกต้อง" หากรูปแบบมีเส้นทางอื่นที่ไม่ใช่ "/*"
"extension_ids"
- อาร์เรย์ของสตริง โดยแต่ละสตริงจะมีรหัสของส่วนขยายที่เข้าถึงทรัพยากรได้
แต่ละองค์ประกอบต้องมีองค์ประกอบ "resources"
และองค์ประกอบ "matches"
หรือ "extension_ids"
ซึ่งจะสร้างการแมปที่แสดงทรัพยากรที่ระบุในหน้าเว็บที่ตรงกับรูปแบบ หรือกับส่วนขยายที่มีรหัสตรงกัน
ความเรียบง่ายของทรัพยากร
ทรัพยากรจะอยู่ในหน้าเว็บโดยใช้ URL chrome-extension://[PACKAGE ID]/[PATH]
ซึ่งสร้างได้ด้วยเมธอด runtime.getURL()
ทรัพยากรให้บริการโดยมีส่วนหัว CORS ที่เหมาะสม ดังนั้นจึงพร้อมใช้งานโดยใช้ fetch()
การไปยังส่วนต่างๆ จากต้นทางเว็บไปยังทรัพยากรของส่วนขยายจะถูกบล็อก เว้นแต่ว่าทรัพยากรนั้นจะอยู่ในรายการที่เข้าถึงได้บนเว็บ ข้อควรทราบเกี่ยวกับกรณีมุมต่างๆ เหล่านี้
- เมื่อส่วนขยายใช้ webRequest API เพื่อเปลี่ยนเส้นทางคำขอทรัพยากรสาธารณะไปยังทรัพยากรที่เข้าถึงบนเว็บไม่ได้ ระบบจะบล็อกคำขอดังกล่าวด้วย
- การเปลี่ยนเส้นทางจากทรัพยากรสาธารณะจะถูกบล็อกแม้ว่าส่วนขยายการเปลี่ยนเส้นทางจะเป็นเจ้าของทรัพยากรที่ไม่สามารถเข้าถึงบนเว็บได้
- ระบบจะบล็อกการไปยังส่วนต่างๆ ในโหมดไม่ระบุตัวตน เว้นแต่จะตั้งค่าของช่อง
"incognito"
เป็น"split"
สคริปต์เนื้อหาเองไม่จำเป็นต้องได้รับอนุญาต
ตัวอย่าง
ตัวอย่างทรัพยากรที่เข้าถึงได้ในเว็บสาธิตการใช้องค์ประกอบนี้ในส่วนขยายที่ใช้งานได้