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