คำอธิบาย
ใช้ chrome.webRequest
API เพื่อสังเกตและวิเคราะห์การเข้าชม รวมถึงสกัดกั้น บล็อก หรือแก้ไขคำขอที่อยู่ระหว่างดำเนินการ
สิทธิ์
webRequest
คุณต้องประกาศสิทธิ์ "webRequest"
ใน ไฟล์ Manifest ของส่วนขยายเพื่อใช้ Web Request API พร้อมกับสิทธิ์โฮสต์ที่จำเป็น หากต้องการสกัดกั้นคำขอทรัพยากรย่อย ส่วนขยายต้องมีสิทธิ์เข้าถึงทั้ง URL ที่ขอและผู้เริ่มต้น เช่น
{ "name": "My extension", ... "permissions": [ "webRequest" ], "host_permissions": [ "*://*.google.com/*" ], ... }
webRequestBlocking
ต้องลงทะเบียนตัวแฮนเดิลเหตุการณ์การบล็อก ตั้งแต่ Manifest V3 เป็นต้นไป ฟีเจอร์นี้จะใช้ได้กับส่วนขยายที่ติดตั้งตามนโยบายเท่านั้น
webRequestAuthProvider
ต้องใช้เพื่อใช้วิธี onAuthRequired
ดูการจัดการการตรวจสอบสิทธิ์
แนวคิดและการใช้งาน
วงจรของคำขอ
Web Request API จะกำหนดชุดเหตุการณ์ที่เกิดขึ้นตามวงจรของคำขอเว็บ คุณใช้ เหตุการณ์เหล่านี้เพื่อสังเกตและวิเคราะห์การเข้าชมได้ เหตุการณ์แบบซิงโครนัสบางอย่างจะช่วยให้คุณสกัดกั้น บล็อก หรือแก้ไขคำขอได้
วงจรของเหตุการณ์สำหรับคำขอที่สำเร็จแสดงไว้ที่นี่ ตามด้วยคำจำกัดความของเหตุการณ์
onBeforeRequest
(อาจเป็นแบบซิงโครนัส)- เริ่มทำงานเมื่อกำลังจะมีการส่งคำขอ ระบบจะส่งเหตุการณ์นี้ก่อนที่จะสร้างการเชื่อมต่อ TCP และใช้เพื่อยกเลิกหรือเปลี่ยนเส้นทางคำขอได้
onBeforeSendHeaders
(อาจเป็นแบบซิงโครนัส)- ทริกเกอร์เมื่อกำลังจะมีการส่งคำขอและมีการเตรียมส่วนหัวเริ่มต้นแล้ว เหตุการณ์นี้มีจุดประสงค์เพื่อให้ส่วนขยายเพิ่ม แก้ไข และลบส่วนหัวของคำขอ (*) ได้
onBeforeSendHeaders
เหตุการณ์จะส่งไปยังผู้ติดตามทั้งหมด ดังนั้นผู้ติดตามที่แตกต่างกันอาจพยายาม แก้ไขคำขอ โปรดดูส่วนรายละเอียดการติดตั้งใช้งานเพื่อดูวิธีจัดการเรื่องนี้ คุณใช้เหตุการณ์นี้ เพื่อยกเลิกคำขอได้ onSendHeaders
- ทริกเกอร์หลังจากส่วนขยายทั้งหมดมีโอกาสแก้ไขส่วนหัวของคำขอ และแสดงเวอร์ชันสุดท้าย (*) ระบบจะทริกเกอร์เหตุการณ์ก่อนที่จะส่งส่วนหัวไปยังเครือข่าย เหตุการณ์นี้เป็น ข้อมูลและจัดการแบบไม่พร้อมกัน โดยจะไม่อนุญาตให้แก้ไขหรือยกเลิกคำขอ
onHeadersReceived
(อาจเป็นแบบซิงโครนัส)- ทริกเกอร์ทุกครั้งที่ได้รับส่วนหัวการตอบกลับ HTTP(S) เนื่องจากการเปลี่ยนเส้นทางและคำขอการตรวจสอบสิทธิ์ จึงอาจเกิดขึ้นหลายครั้งต่อคำขอ เหตุการณ์นี้มีไว้เพื่อให้ส่วนขยายสามารถ เพิ่ม แก้ไข และลบส่วนหัวของการตอบกลับ เช่น ส่วนหัว Content-Type ขาเข้า ระบบจะประมวลผล คำสั่งแคชก่อนที่จะทริกเกอร์เหตุการณ์นี้ ดังนั้นการแก้ไขส่วนหัว เช่น Cache-Control จึงไม่มีผลต่อแคชของเบราว์เซอร์ นอกจากนี้ ยังช่วยให้คุณยกเลิกหรือเปลี่ยนเส้นทางคำขอได้ด้วย
onAuthRequired
(อาจเป็นแบบซิงโครนัส)- ทริกเกอร์เมื่อคำขอต้องมีการตรวจสอบสิทธิ์ของผู้ใช้ เหตุการณ์นี้สามารถจัดการแบบซิงโครนัสเพื่อ ระบุข้อมูลเข้าสู่ระบบสำหรับการตรวจสอบสิทธิ์ โปรดทราบว่าส่วนขยายอาจให้ข้อมูลเข้าสู่ระบบที่ไม่ถูกต้อง โปรดระวัง อย่าป้อนข้อมูลเข้าสู่ระบบที่ไม่ถูกต้องซ้ำๆ จนเกิดลูปไม่สิ้นสุด นอกจากนี้ยังใช้เพื่อ ยกเลิกคำขอได้ด้วย
onBeforeRedirect
- ทริกเกอร์เมื่อกำลังจะดำเนินการเปลี่ยนเส้นทาง การเปลี่ยนเส้นทางอาจเกิดขึ้นจากรหัสการตอบกลับ HTTP หรือจากส่วนขยาย เหตุการณ์นี้เป็นเหตุการณ์ให้ข้อมูลและจัดการแบบไม่พร้อมกัน และไม่สามารถแก้ไขหรือยกเลิกคำขอได้
onResponseStarted
- ทริกเกอร์เมื่อได้รับไบต์แรกของเนื้อหาการตอบกลับ สำหรับคำขอ HTTP หมายความว่าบรรทัดสถานะและส่วนหัวการตอบกลับพร้อมใช้งาน เหตุการณ์นี้เป็นเหตุการณ์ให้ข้อมูลและจัดการ แบบไม่พร้อมกัน โดยจะไม่อนุญาตให้แก้ไขหรือยกเลิกคำขอ
onCompleted
- ทริกเกอร์เมื่อประมวลผลคำขอสำเร็จ
onErrorOccurred
- ทริกเกอร์เมื่อประมวลผลคำขอไม่สำเร็จ
Web Request API รับประกันว่าสำหรับคำขอแต่ละรายการ ระบบจะทริกเกอร์ onCompleted
หรือ onErrorOccurred
เป็นเหตุการณ์สุดท้าย โดยมีข้อยกเว้น 1 ข้อคือ หากคำขอเปลี่ยนเส้นทางไปยัง URL data://
ระบบจะรายงาน onBeforeRedirect
เป็นเหตุการณ์สุดท้าย
* โปรดทราบว่า API คำขอเว็บจะแสดงการแยกข้อมูลของสแต็กเครือข่ายไปยังส่วนขยาย ภายใน ระบบจะแบ่งคำขอ URL หนึ่งรายการออกเป็นคำขอ HTTP หลายรายการ (เช่น เพื่อดึงช่วงไบต์แต่ละช่วงจากไฟล์ขนาดใหญ่) หรือจะจัดการโดยสแต็กเครือข่ายโดยไม่ต้องสื่อสารกับเครือข่ายก็ได้ ด้วยเหตุนี้ API จึงไม่ได้ระบุส่วนหัว HTTP สุดท้ายที่ส่งไปยังเครือข่าย เช่น ส่วนหัวทั้งหมดที่เกี่ยวข้องกับการแคชจะมองไม่เห็นในส่วนขยาย
ปัจจุบันระบบไม่ได้ระบุส่วนหัวต่อไปนี้ให้กับเหตุการณ์ onBeforeSendHeaders
รายการนี้ ไม่รับประกันว่าจะสมบูรณ์หรือเสถียร
- การให้สิทธิ์
- Cache-Control
- การเชื่อมต่อ
- Content-Length
- โฮสต์
- If-Modified-Since
- If-None-Match
- If-Range
- Partial-Data
- Pragma
- Proxy-Authorization
- Proxy-Connection
- Transfer-Encoding
ตั้งแต่ Chrome 79 เป็นต้นไป การแก้ไขส่วนหัวของคำขอจะส่งผลต่อการตรวจสอบการแชร์ทรัพยากรข้ามโดเมน (CORS) หากส่วนหัวที่แก้ไขสำหรับคำขอแบบข้ามโดเมนไม่เป็นไปตามเกณฑ์ ระบบจะ ส่งการตรวจสอบล่วงหน้าของ CORS เพื่อถามเซิร์ฟเวอร์ว่ายอมรับส่วนหัวดังกล่าวได้หรือไม่ หากต้องการแก้ไขส่วนหัวในลักษณะที่ละเมิดโปรโตคอล CORS คุณต้องระบุ 'extraHeaders'
ใน opt_extraInfoSpec
ในทางกลับกัน การแก้ไขส่วนหัวการตอบกลับใช้ไม่ได้ในการหลอกการตรวจสอบ CORS หากต้องการหลอกโปรโตคอล CORS คุณต้องระบุ 'extraHeaders'
สำหรับ การแก้ไขการตอบกลับด้วย
ตั้งแต่ Chrome 79 เป็นต้นไป API webRequest จะไม่สกัดกั้นคำขอและ การตอบกลับของ CORS Preflight โดยค่าเริ่มต้น ส่วนขยายจะเห็นการตรวจสอบล่วงหน้าของ CORS สำหรับ URL ของคำขอ หากมี เครื่องรับที่มี 'extraHeaders'
ระบุไว้ใน opt_extraInfoSpec
สำหรับ URL ของคำขอ onBeforeRequest
ยังสามารถ'extraHeaders'
จาก Chrome 79 ได้ด้วย
ตั้งแต่ Chrome 79 เป็นต้นไป ระบบจะไม่ระบุส่วนหัวของคำขอต่อไปนี้ และจะแก้ไขหรือ นำออกไม่ได้หากไม่ได้ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
- Origin
ตั้งแต่ Chrome 72 เป็นต้นไป หากต้องการแก้ไขการตอบกลับก่อนที่ Cross Origin Read Blocking (CORB) จะบล็อกการตอบกลับ คุณจะต้องระบุ 'extraHeaders'
ใน opt_extraInfoSpec
ตั้งแต่ Chrome 72 เป็นต้นไป ระบบจะไม่ระบุส่วนหัวของคำขอต่อไปนี้ และจะแก้ไข หรือนำออกไม่ได้หากไม่ได้ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
- Accept-Language
- Accept-Encoding
- ผู้อ้างอิง
- คุกกี้
ตั้งแต่ Chrome 72 เป็นต้นไป ระบบจะไม่ระบุส่วนหัวการตอบกลับ Set-Cookie
และจะแก้ไข หรือนำออกไม่ได้หากไม่ได้ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
ตั้งแต่ Chrome 89 เป็นต้นไป คุณจะแก้ไขหรือนำส่วนหัวการตอบกลับ X-Frame-Options
ออกอย่างมีประสิทธิภาพไม่ได้ หากไม่ได้ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
API ของ webRequest จะแสดงเฉพาะคำขอที่ส่วนขยายมีสิทธิ์ดูตามสิทธิ์ ของโฮสต์ นอกจากนี้ คุณจะเข้าถึงได้เฉพาะสคีมต่อไปนี้ http://
, https://
, ftp://
, file://
, ws://
(ตั้งแต่ Chrome 58), wss://
(ตั้งแต่ Chrome 58), urn:
(ตั้งแต่ Chrome 91) หรือ chrome-extension://
นอกจากนี้ แม้แต่คำขอบางรายการที่มี URL ที่ใช้รูปแบบใดรูปแบบหนึ่งข้างต้น ก็จะถูกซ่อนไว้ ซึ่งรวมถึง chrome-extension://other_extension_id
ที่ other_extension_id
ไม่ใช่ รหัสของส่วนขยายที่จะจัดการคำขอ https://www.google.com/chrome
และคำขออื่นๆ ที่มีความละเอียดอ่อน ซึ่งเป็นส่วนสำคัญของฟังก์ชันการทำงานของเบราว์เซอร์ นอกจากนี้ XMLHttpRequests แบบซิงโครนัสจากส่วนขยายจะ ซ่อนจากตัวแฮนเดิลเหตุการณ์ที่บล็อกเพื่อป้องกันการหยุดชะงัก โปรดทราบว่าสำหรับบาง รูปแบบที่รองรับ ชุดเหตุการณ์ที่พร้อมใช้งานอาจถูกจำกัดเนื่องจากลักษณะของ โปรโตคอลที่เกี่ยวข้อง ตัวอย่างเช่น สำหรับไฟล์: scheme จะส่งได้เฉพาะ onBeforeRequest
, onResponseStarted
, onCompleted
และ onErrorOccurred
ตั้งแต่ Chrome 58 เป็นต้นไป API webRequest จะรองรับการสกัดกั้นคำขอแฮนด์เชค WebSocket เนื่องจากแฮนด์เชคดำเนินการผ่านคำขออัปเกรด HTTP โฟลว์จึงเหมาะกับโมเดล webRequest ที่มุ่งเน้น HTTP โปรดทราบว่า API จะไม่สกัดกั้นรายการต่อไปนี้
- ข้อความแต่ละรายการที่ส่งผ่านการเชื่อมต่อ WebSocket ที่สร้างขึ้น
- WebSocket กำลังปิดการเชื่อมต่อ
คำขอ WebSocket ไม่รองรับการเปลี่ยนเส้นทาง
ตั้งแต่ Chrome 72 เป็นต้นไป ส่วนขยายจะสกัดกั้นคำขอได้ก็ต่อเมื่อมีสิทธิ์เข้าถึงโฮสต์ ทั้ง URL ที่ขอและผู้เริ่มคำขอ
ตั้งแต่ Chrome 96 เป็นต้นไป API ของ webRequest จะรองรับการสกัดกั้นคำขอแฮนด์เชค WebTransport ผ่าน HTTP/3 เนื่องจากการแฮนด์เชคดำเนินการผ่านคำขอ HTTP CONNECT โฟลว์จึงเหมาะกับโมเดล webRequest ที่มุ่งเน้น HTTP ข้อควรทราบ
- เมื่อสร้างเซสชันแล้ว ส่วนขยายจะไม่สามารถสังเกตหรือแทรกแซงเซสชันผ่าน webRequest API ได้
- ระบบจะไม่สนใจการแก้ไขส่วนหัวของคำขอ HTTP ใน
onBeforeSendHeaders
- WebTransport ผ่าน HTTP/3 ไม่รองรับการเปลี่ยนเส้นทางและการตรวจสอบสิทธิ์
รหัสคำขอ
คำขอแต่ละรายการจะระบุด้วยรหัสคำขอ รหัสนี้จะไม่ซ้ำกันภายในเซสชันเบราว์เซอร์และบริบทของส่วนขยาย โดยจะคงที่ตลอดวงจรของคำขอและใช้เพื่อจับคู่เหตุการณ์สำหรับคำขอเดียวกันได้ โปรดทราบว่าคำขอ HTTP หลายรายการจะได้รับการแมปกับคำขอเว็บ 1 รายการ ในกรณีของการเปลี่ยนเส้นทาง HTTP หรือการตรวจสอบสิทธิ์ HTTP
การลงทะเบียน Listener เหตุการณ์
หากต้องการลงทะเบียนเครื่องมือฟังเหตุการณ์สำหรับคำขอเว็บ คุณต้องใช้รูปแบบของฟังก์ชันaddListener()
ปกติ นอกเหนือจากการระบุฟังก์ชันเรียกกลับแล้ว คุณยังต้องระบุอาร์กิวเมนต์ตัวกรอง และอาจระบุอาร์กิวเมนต์ข้อมูลเพิ่มเติมที่ไม่บังคับได้ด้วย
อาร์กิวเมนต์ 3 รายการของ addListener()
ใน API คำขอเว็บมีคำจำกัดความดังนี้
var callback = function(details) {...}; var filter = {...}; var opt_extraInfoSpec = [...];
ตัวอย่างการรอรับเหตุการณ์ onBeforeRequest
มีดังนี้
chrome.webRequest.onBeforeRequest.addListener( callback, filter, opt_extraInfoSpec);
การเรียกใช้ addListener()
แต่ละครั้งจะใช้ฟังก์ชัน Callback ที่จำเป็นเป็นพารามิเตอร์แรก ฟังก์ชัน การเรียกกลับนี้จะส่งพจนานุกรมที่มีข้อมูลเกี่ยวกับคำขอ URL ปัจจุบัน ข้อมูลในพจนานุกรมนี้ขึ้นอยู่กับประเภทเหตุการณ์ที่เฉพาะเจาะจง รวมถึงเนื้อหาของ opt_extraInfoSpec
หากอาร์เรย์ opt_extraInfoSpec
ที่ไม่บังคับมีสตริง 'blocking'
(อนุญาตเฉพาะสำหรับ เหตุการณ์ที่เฉพาะเจาะจง) ฟังก์ชันเรียกกลับจะได้รับการจัดการแบบซิงโครนัส ซึ่งหมายความว่าคำขอจะถูกบล็อกจนกว่าฟังก์ชัน Callback จะแสดงผล ในกรณีนี้ การเรียกกลับจะแสดงผล webRequest.BlockingResponse
ที่กำหนดวงจรเพิ่มเติมของคำขอ การตอบกลับนี้ช่วยให้ยกเลิกหรือเปลี่ยนเส้นทางคำขอ (onBeforeRequest
) ยกเลิกคำขอหรือแก้ไขส่วนหัว (onBeforeSendHeaders
, onHeadersReceived
) และยกเลิกคำขอหรือระบุข้อมูลเข้าสู่ระบบสำหรับการตรวจสอบสิทธิ์ (onAuthRequired
) ได้ ทั้งนี้ขึ้นอยู่กับบริบท
หากอาร์เรย์ opt_extraInfoSpec
ที่ไม่บังคับมีสตริง 'asyncBlocking'
แทน (อนุญาตเฉพาะสำหรับ onAuthRequired
) ส่วนขยายจะสร้าง webRequest.BlockingResponse
แบบไม่พร้อมกันได้
webRequest.RequestFilter
filter
ช่วยจำกัดคำขอสำหรับเหตุการณ์ที่ทริกเกอร์ในมิติข้อมูลต่างๆ ดังนี้
- URL
- รูปแบบ URL เช่น
*://www.google.com/foo*bar
- ประเภท
- ประเภทคำขอ เช่น
main_frame
(เอกสารที่โหลดสำหรับเฟรมระดับบนสุด),sub_frame
(เอกสารที่โหลดสำหรับเฟรมที่ฝังอยู่) และimage
(รูปภาพในเว็บไซต์) ดูwebRequest.RequestFilter
- รหัสแท็บ
- ตัวระบุสำหรับแท็บเดียว
- รหัสหน้าต่าง
- ตัวระบุสำหรับหน้าต่าง
คุณระบุสตริงใน opt_extraInfoSpec
เพื่อขอข้อมูลเพิ่มเติมเกี่ยวกับคำขอได้ ทั้งนี้ขึ้นอยู่กับประเภทเหตุการณ์ ใช้เพื่อระบุข้อมูลโดยละเอียดเกี่ยวกับข้อมูลของคำขอเท่านั้น หากมีการขออย่างชัดแจ้ง
การจัดการการตรวจสอบสิทธิ์
หากต้องการจัดการคำขอการตรวจสอบสิทธิ์ HTTP ให้เพิ่มสิทธิ์ "webRequestAuthProvider"
ลงในไฟล์ Manifest
{ "permissions": [ "webRequest", "webRequestAuthProvider" ] }
โปรดทราบว่าส่วนขยายที่ติดตั้งตามนโยบายซึ่งมีสิทธิ์ "webRequestBlocking"
ไม่จำเป็นต้องมีสิทธิ์นี้
หากต้องการระบุข้อมูลเข้าสู่ระบบแบบพร้อมกัน ให้ทำดังนี้
chrome.webRequest.onAuthRequired.addListener((details) => { return { authCredentials: { username: 'guest', password: 'guest' } }; }, { urls: ['https://httpbin.org/basic-auth/guest/guest'] }, ['blocking'] );
วิธีระบุข้อมูลเข้าสู่ระบบแบบอะซิงโครนัส
chrome.webRequest.onAuthRequired.addListener((details, callback) => { callback({ authCredentials: { username: 'guest', password: 'guest' } }); }, { urls: ['https://httpbin.org/basic-auth/guest/guest'] }, ['asyncBlocking'] );
รายละเอียดการติดตั้งใช้งาน
รายละเอียดการติดตั้งใช้งานหลายอย่างอาจมีความสำคัญที่ควรทราบเมื่อพัฒนาส่วนขยายที่ใช้ Web Request API
web_accessible_resources
เมื่อส่วนขยายใช้ WebRequest API เพื่อเปลี่ยนเส้นทางคำขอทรัพยากรสาธารณะไปยังทรัพยากรที่เข้าถึงผ่านเว็บไม่ได้ ระบบจะบล็อกส่วนขยายดังกล่าวและทำให้เกิดข้อผิดพลาด ข้อความข้างต้นยังคงเป็นจริงแม้ว่าส่วนขยายที่เปลี่ยนเส้นทางจะเป็นเจ้าของทรัพยากรที่เข้าถึงเว็บไม่ได้ก็ตาม หากต้องการประกาศทรัพยากรเพื่อใช้กับ declarativeWebRequest API คุณต้องประกาศและป้อนข้อมูลอาร์เรย์ "web_accessible_resources"
ในไฟล์ Manifest ตามที่ระบุไว้ที่นี่
การแก้ไขข้อขัดแย้ง
ในการใช้งาน API คำขอเว็บปัจจุบัน ระบบจะถือว่าคำขอถูกยกเลิกหากมีส่วนขยายอย่างน้อย 1 รายการสั่งให้ยกเลิกคำขอ หากส่วนขยายยกเลิกคำขอ ระบบจะแจ้งให้ส่วนขยายทั้งหมดทราบโดยใช้เหตุการณ์ onErrorOccurred
ส่วนขยายจะเปลี่ยนเส้นทางคำขอหรือแก้ไขส่วนหัวได้ครั้งละ 1 รายการเท่านั้น หากมีส่วนขยายมากกว่า 1 รายการพยายามแก้ไขคำขอ ส่วนขยายที่ติดตั้งล่าสุดจะเป็นผู้ชนะ และระบบจะละเว้นส่วนขยายอื่นๆ ทั้งหมด ระบบจะไม่แจ้งเตือนส่วนขยายหาก ไม่สนใจคำสั่งให้แก้ไขหรือเปลี่ยนเส้นทาง
การแคช
Chrome ใช้แคช 2 ประเภท ได้แก่ แคชในดิสก์และแคชในหน่วยความจำที่รวดเร็วมาก อายุการใช้งานของแคชในหน่วยความจำจะเชื่อมโยงกับอายุการใช้งานของกระบวนการแสดงผล ซึ่งสอดคล้องกับแท็บโดยประมาณ คำขอที่ได้รับคำตอบจากแคชในหน่วยความจำจะไม่ปรากฏใน Web Request API หากตัวแฮนเดิลคำขอเปลี่ยนลักษณะการทำงาน (เช่น ลักษณะการทำงานที่บล็อกคำขอ) การรีเฟรชหน้าเว็บอย่างง่ายอาจไม่เป็นไปตามลักษณะการทำงานที่เปลี่ยนแปลงนี้ หากต้องการให้การเปลี่ยนแปลงลักษณะการทำงานมีผล ให้โทรหา handlerBehaviorChanged()
เพื่อล้างแคชในหน่วยความจำ แต่ไม่ควรทำบ่อยๆ เนื่องจากการล้างแคชเป็นกระบวนการที่ใช้ทรัพยากรมาก คุณไม่จำเป็นต้องเรียกใช้ handlerBehaviorChanged()
หลังจากลงทะเบียนหรือยกเลิกการลงทะเบียน Listener ของเหตุการณ์
การประทับเวลา
เรารับประกันว่าพร็อพเพอร์ตี้ timestamp
ของเหตุการณ์คำขอเว็บจะสอดคล้องกันภายในเท่านั้น การเปรียบเทียบเหตุการณ์หนึ่งกับอีกเหตุการณ์หนึ่งจะทําให้คุณเห็นออฟเซ็ตที่ถูกต้องระหว่างเหตุการณ์เหล่านั้น แต่การเปรียบเทียบ เหตุการณ์เหล่านั้นกับเวลาปัจจุบันภายในส่วนขยาย (เช่น ผ่าน (new Date()).getTime()
) อาจ ทําให้ได้ผลลัพธ์ที่ไม่คาดคิด
การจัดการข้อผิดพลาด
หากคุณพยายามลงทะเบียนเหตุการณ์ที่มีอาร์กิวเมนต์ที่ไม่ถูกต้อง ระบบจะแสดงข้อผิดพลาด JavaScript และ จะไม่ลงทะเบียนตัวแฮนเดิลเหตุการณ์ หากเกิดข้อผิดพลาดขณะจัดการเหตุการณ์ หรือหากตัวแฮนเดิลเหตุการณ์แสดงผลการตอบกลับการบล็อกที่ไม่ถูกต้อง ระบบจะบันทึกข้อความแสดงข้อผิดพลาดลงในคอนโซลของส่วนขยาย และจะละเว้นตัวแฮนเดิลสำหรับคำขอนั้น
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีบล็อกคำขอทั้งหมดไปยัง www.evil.com
chrome.webRequest.onBeforeRequest.addListener( function(details) { return {cancel: details.url.indexOf("://www.evil.com/") != -1}; }, {urls: ["<all_urls>"]}, ["blocking"] );
เนื่องจากฟังก์ชันนี้ใช้ตัวแฮนเดิลเหตุการณ์ที่บล็อก จึงต้องมีสิทธิ์ "webRequest"
รวมถึงสิทธิ์ "webRequestBlocking"
ในไฟล์ Manifest
ตัวอย่างต่อไปนี้บรรลุเป้าหมายเดียวกันในวิธีที่มีประสิทธิภาพมากขึ้น เนื่องจากไม่จำเป็นต้องส่งคำขอที่ไม่ได้กำหนดเป้าหมายไปยัง www.evil.com
ไปยังส่วนขยาย
chrome.webRequest.onBeforeRequest.addListener( function(details) { return {cancel: true}; }, {urls: ["*://www.evil.com/*"]}, ["blocking"] );
ตัวอย่างต่อไปนี้แสดงวิธีลบส่วนหัว User-Agent ออกจากคำขอทั้งหมด
chrome.webRequest.onBeforeSendHeaders.addListener( function(details) { for (var i = 0; i < details.requestHeaders.length; ++i) { if (details.requestHeaders[i].name === 'User-Agent') { details.requestHeaders.splice(i, 1); break; } } return {requestHeaders: details.requestHeaders}; }, {urls: ["<all_urls>"]}, ["blocking", "requestHeaders"] );
หากต้องการลองใช้ chrome.webRequest
API ให้ติดตั้งตัวอย่าง webRequest จากที่เก็บchrome-extension-samples
ประเภท
BlockingResponse
แสดงค่าสําหรับตัวแฮนเดิลเหตุการณ์ที่มีการใช้ extraInfoSpec 'blocking' อนุญาตให้ตัวแฮนเดิลเหตุการณ์แก้ไขคำขอของเครือข่าย
พร็อพเพอร์ตี้
- authCredentials
object ไม่บังคับ
ใช้เป็นคำตอบสำหรับเหตุการณ์ onAuthRequired เท่านั้น หากตั้งค่าไว้ ระบบจะส่งคำขอโดยใช้ข้อมูลเข้าสู่ระบบที่ระบุ
- รหัสผ่าน
สตริง
- ชื่อผู้ใช้
สตริง
-
- ยกเลิก
บูลีน ไม่บังคับ
หากเป็นจริง ระบบจะยกเลิกคำขอ ซึ่งจะป้องกันไม่ให้มีการส่งคำขอ ซึ่งใช้เป็นการตอบกลับเหตุการณ์ onBeforeRequest, onBeforeSendHeaders, onHeadersReceived และ onAuthRequired ได้
- redirectUrl
สตริง ไม่บังคับ
ใช้เป็นคำตอบสำหรับเหตุการณ์ onBeforeRequest และ onHeadersReceived เท่านั้น หากตั้งค่าไว้ ระบบจะป้องกันไม่ให้ส่ง/ดำเนินการคำขอเดิมให้เสร็จสมบูรณ์ และจะเปลี่ยนเส้นทางไปยัง URL ที่ระบุแทน อนุญาตการเปลี่ยนเส้นทางไปยังรูปแบบที่ไม่ใช่ HTTP เช่น
data:
การเปลี่ยนเส้นทางที่เริ่มต้นโดยการดำเนินการเปลี่ยนเส้นทางจะใช้วิธีการคำขอเดิมสำหรับการเปลี่ยนเส้นทาง โดยมีข้อยกเว้น 1 ข้อคือ หากการเปลี่ยนเส้นทางเริ่มต้นในขั้นตอน onHeadersReceived ระบบจะออกการเปลี่ยนเส้นทางโดยใช้เมธอด GET ระบบจะไม่สนใจการเปลี่ยนเส้นทางจาก URL ที่มีรูปแบบws://
และwss://
- requestHeaders
HttpHeaders ไม่บังคับ
ใช้เป็นคำตอบสำหรับเหตุการณ์ onBeforeSendHeaders เท่านั้น หากตั้งค่าไว้ ระบบจะส่งคำขอพร้อมส่วนหัวของคำขอเหล่านี้แทน
- responseHeaders
HttpHeaders ไม่บังคับ
ใช้เป็นคำตอบสำหรับเหตุการณ์ onHeadersReceived เท่านั้น หากตั้งค่าไว้ ระบบจะถือว่าเซิร์ฟเวอร์ตอบกลับด้วยส่วนหัวของการตอบกลับเหล่านี้แทน ให้ส่งคืน
responseHeaders
ก็ต่อเมื่อคุณต้องการแก้ไขส่วนหัวจริงๆ เพื่อจำกัดจำนวนข้อขัดแย้ง (ส่วนขยายเพียงรายการเดียวเท่านั้นที่แก้ไขresponseHeaders
ได้สำหรับแต่ละคำขอ)
FormDataItem
มีข้อมูลที่ส่งภายในข้อมูลแบบฟอร์ม สำหรับแบบฟอร์มที่เข้ารหัส URL ระบบจะจัดเก็บเป็นสตริงหากข้อมูลเป็นสตริง UTF-8 และเป็น ArrayBuffer ในกรณีอื่นๆ สำหรับ form-data จะเป็น ArrayBuffer หาก form-data แสดงถึงการอัปโหลดไฟล์ จะเป็นสตริงที่มีชื่อไฟล์ หากมีการระบุชื่อไฟล์
ค่าแจกแจง
ArrayBuffer
สตริง
HttpHeaders
อาร์เรย์ของส่วนหัว HTTP โดยแต่ละส่วนหัวจะแสดงเป็นพจนานุกรมที่มีคีย์ name
และ value
หรือ binaryValue
ประเภท
object[]
พร็อพเพอร์ตี้
- binaryValue
number[] ไม่บังคับ
ค่าของส่วนหัว HTTP หากแสดงด้วย UTF-8 ไม่ได้ โดยจะจัดเก็บเป็นค่าไบต์แต่ละค่า (0..255)
- ชื่อ
สตริง
ชื่อของส่วนหัว HTTP
- value
สตริง ไม่บังคับ
ค่าของส่วนหัว HTTP หากแสดงด้วย UTF-8 ได้
IgnoredActionType
ค่าแจกแจง
"redirect"
"request_headers"
"response_headers"
"auth_credentials"
OnAuthRequiredOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรใส่ส่วนหัวของการตอบกลับไว้ในเหตุการณ์
"blocking"
ระบุว่าคำขอจะถูกบล็อกจนกว่าฟังก์ชัน Callback จะแสดงผล
"asyncBlocking"
ระบุว่าฟังก์ชันเรียกกลับได้รับการจัดการแบบไม่พร้อมกัน
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnBeforeRedirectOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรใส่ส่วนหัวของการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnBeforeRequestOptions
ค่าแจกแจง
"blocking"
ระบุว่าคำขอจะถูกบล็อกจนกว่าฟังก์ชัน Callback จะแสดงผล
"requestBody"
ระบุว่าควรใส่เนื้อหาของคำขอไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnBeforeSendHeadersOptions
ค่าแจกแจง
"requestHeaders"
ระบุว่าควรใส่ส่วนหัวของคำขอไว้ในเหตุการณ์
"blocking"
ระบุว่าคำขอจะถูกบล็อกจนกว่าฟังก์ชัน Callback จะแสดงผล
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnCompletedOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรใส่ส่วนหัวของการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnErrorOccurredOptions
ค่า
"extraHeaders"
OnHeadersReceivedOptions
ค่าแจกแจง
"blocking"
ระบุว่าคำขอจะถูกบล็อกจนกว่าฟังก์ชัน Callback จะแสดงผล
"responseHeaders"
ระบุว่าควรใส่ส่วนหัวของการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnResponseStartedOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรใส่ส่วนหัวของการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
OnSendHeadersOptions
ค่าแจกแจง
"requestHeaders"
ระบุว่าควรใส่ส่วนหัวของคำขอไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวสามารถละเมิดกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) ได้
RequestFilter
ออบเจ็กต์ที่อธิบายตัวกรองที่จะใช้กับเหตุการณ์ webRequest
พร็อพเพอร์ตี้
- tabId
หมายเลข ไม่บังคับ
- ประเภท
ResourceType[] ไม่บังคับ
รายการประเภทคำขอ ระบบจะกรองคำขอที่ไม่ตรงกับประเภทใดๆ ออก
- URL
string[]
รายการ URL หรือรูปแบบ URL ระบบจะกรองคำขอที่ไม่ตรงกับ URL ใดๆ ออก
- windowId
หมายเลข ไม่บังคับ
ResourceType
ค่าแจกแจง
"main_frame"
ระบุทรัพยากรเป็นเฟรมหลัก
"sub_frame"
ระบุทรัพยากรเป็นเฟรมย่อย
"stylesheet"
ระบุทรัพยากรเป็นสไตล์ชีต
"script"
ระบุทรัพยากรเป็นสคริปต์
"image"
ระบุทรัพยากรเป็นรูปภาพ
"font"
ระบุทรัพยากรเป็นแบบอักษร
"object"
ระบุทรัพยากรเป็นออบเจ็กต์
"xmlhttprequest"
ระบุทรัพยากรเป็น XMLHttpRequest
"ping"
ระบุทรัพยากรเป็น ping
"csp_report"
ระบุทรัพยากรเป็นรายงานนโยบายรักษาความปลอดภัยเนื้อหา (CSP)
"media"
ระบุทรัพยากรเป็นออบเจ็กต์สื่อ
"websocket"
ระบุทรัพยากรเป็น WebSocket
"webbundle"
ระบุทรัพยากรเป็น WebBundle
"other"
ระบุทรัพยากรเป็นประเภทที่ไม่ได้รวมอยู่ในประเภทที่ระบุไว้
UploadData
มีข้อมูลที่อัปโหลดในคำขอ URL
พร็อพเพอร์ตี้
- ไบต์
ไม่บังคับ
ArrayBuffer ที่มีสำเนาของข้อมูล
- ไฟล์
สตริง ไม่บังคับ
สตริงที่มีเส้นทางและชื่อของไฟล์
พร็อพเพอร์ตี้
MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES
จำนวนครั้งสูงสุดที่เรียกใช้ handlerBehaviorChanged
ได้ต่อช่วงเวลาต่อเนื่อง 10 นาที handlerBehaviorChanged
เป็นการเรียกใช้ฟังก์ชันที่มีค่าใช้จ่ายสูงซึ่งไม่ควรเรียกใช้บ่อยๆ
ค่า
20
เมธอด
handlerBehaviorChanged()
chrome.webRequest.handlerBehaviorChanged(): Promise<void>
ต้องเรียกใช้เมื่อลักษณะการทำงานของตัวแฮนเดิล webRequest เปลี่ยนไปเพื่อป้องกันการจัดการที่ไม่ถูกต้องเนื่องจากการแคช การเรียกใช้ฟังก์ชันนี้มีค่าใช้จ่ายสูง อย่าโทรหาบ่อย
การคืนสินค้า
-
Promise<void>
Chrome 116 ขึ้นไป
กิจกรรม
onActionIgnored
chrome.webRequest.onActionIgnored.addListener(
callback: function,
)
ทริกเกอร์เมื่อระบบไม่สนใจการแก้ไขที่ส่วนขยายเสนอสำหรับคำขอเครือข่าย กรณีนี้จะเกิดขึ้นในกรณีที่เกิดความขัดแย้งกับส่วนขยายอื่นๆ
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
- รายละเอียด
ออบเจ็กต์
- การดำเนินการ
การดำเนินการที่เสนอซึ่งถูกละเว้น
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
-
-
onAuthRequired
chrome.webRequest.onAuthRequired.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnAuthRequiredOptions[],
)
ทริกเกอร์เมื่อได้รับการตรวจสอบสิทธิ์ล้มเหลว โดยผู้ฟังจะมี 3 ตัวเลือก ได้แก่ ระบุข้อมูลเข้าสู่ระบบเพื่อการตรวจสอบสิทธิ์ ยกเลิกคำขอและแสดงหน้าข้อผิดพลาด หรือไม่ดำเนินการใดๆ กับการท้าทาย หากมีการระบุข้อมูลเข้าสู่ระบบของผู้ใช้ที่ไม่ถูกต้อง ระบบอาจเรียกใช้ฟังก์ชันนี้หลายครั้งสำหรับคำขอเดียวกัน โปรดทราบว่าต้องระบุโหมด 'blocking'
หรือ 'asyncBlocking'
เพียงโหมดเดียวในพารามิเตอร์ extraInfoSpec
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object, asyncCallback?: function) => BlockingResponse | undefined
- รายละเอียด
ออบเจ็กต์
- ผู้ท้าชิง
ออบเจ็กต์
เซิร์ฟเวอร์ที่ขอการตรวจสอบสิทธิ์
- ผู้จัด
สตริง
- พอร์ต
ตัวเลข
-
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- isProxy
บูลีน
จริงสำหรับ Proxy-Authenticate, เท็จสำหรับ WWW-Authenticate
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- ขอบเขต
สตริง ไม่บังคับ
ขอบเขตการตรวจสอบสิทธิ์ที่เซิร์ฟเวอร์ระบุ หากมี
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
- สคีม
สตริง
รูปแบบการตรวจสอบสิทธิ์ เช่น Basic หรือ Digest
- statusCode
ตัวเลข
Chrome 43 ขึ้นไปรหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์แสดง
- statusLine
สตริง
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (เช่น การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
- asyncCallback
ฟังก์ชัน ไม่บังคับ
Chrome 58 ขึ้นไปพารามิเตอร์
asyncCallback
มีลักษณะดังนี้(response: BlockingResponse) => void
- การตอบกลับ
-
- returns
BlockingResponse | ไม่ระบุ
หากระบุ "blocking" ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
- ตัวกรอง
- extraInfoSpec
OnAuthRequiredOptions[] ไม่บังคับ
onBeforeRedirect
chrome.webRequest.onBeforeRedirect.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeRedirectOptions[],
)
เริ่มทำงานเมื่อกำลังจะเกิดการเปลี่ยนเส้นทางที่เซิร์ฟเวอร์เริ่มต้น
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- fromCache
บูลีน
ระบุว่าดึงข้อมูลการตอบกลับนี้จากแคชในดิสก์หรือไม่
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- ip
สตริง ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริง โปรดทราบว่าอาจเป็นที่อยู่ IPv6 ที่แท้จริง
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- redirectUrl
สตริง
URL ใหม่
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการเปลี่ยนเส้นทางนี้
- statusCode
ตัวเลข
รหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์แสดง
- statusLine
สตริง
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (เช่น การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
-
- ตัวกรอง
- extraInfoSpec
OnBeforeRedirectOptions[] ไม่บังคับ
onBeforeRequest
chrome.webRequest.onBeforeRequest.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeRequestOptions[],
)
เริ่มทำงานเมื่อกำลังจะเกิดคำขอ
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => BlockingResponse | undefined
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycle
extensionTypes.DocumentLifecycle ไม่บังคับ
Chrome 106 ขึ้นไปวงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameType
extensionTypes.FrameType ไม่บังคับ
Chrome 106 ขึ้นไปประเภทเฟรมที่เกิดคำขอ
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestBody
object ไม่บังคับ
มีข้อมูลเนื้อหาของคำขอ HTTP ระบุเฉพาะในกรณีที่ extraInfoSpec มี "requestBody"
- ข้อผิดพลาด
สตริง ไม่บังคับ
ข้อผิดพลาดเมื่อรับข้อมูลเนื้อหาคำขอ
- formData
object ไม่บังคับ
หากเมธอดคำขอคือ POST และเนื้อหาเป็นลำดับของคู่คีย์-ค่าที่เข้ารหัสใน UTF8 ซึ่งเข้ารหัสเป็น multipart/form-data หรือ application/x-www-form-urlencoded พจนานุกรมนี้จะปรากฏขึ้นและสำหรับแต่ละคีย์จะมีรายการค่าทั้งหมดสำหรับคีย์นั้น หากข้อมูลเป็นสื่อประเภทอื่นหรือมีรูปแบบไม่ถูกต้อง จะไม่มีพจนานุกรม ค่าตัวอย่างของพจนานุกรมนี้คือ {'key': ['value1', 'value2']}
- ดิบ
UploadData[] ไม่บังคับ
หากเมธอดคำขอคือ PUT หรือ POST และยังไม่ได้แยกวิเคราะห์เนื้อหาใน formData องค์ประกอบเนื้อหาของคำขอที่ยังไม่ได้แยกวิเคราะห์จะอยู่ในอาร์เรย์นี้
-
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
- returns
BlockingResponse | ไม่ระบุ
หากระบุ "blocking" ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
- ตัวกรอง
- extraInfoSpec
OnBeforeRequestOptions[] ไม่บังคับ
onBeforeSendHeaders
chrome.webRequest.onBeforeSendHeaders.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeSendHeadersOptions[],
)
ทริกเกอร์ก่อนส่งคำขอ HTTP เมื่อส่วนหัวของคำขอพร้อมใช้งาน ปัญหานี้อาจเกิดขึ้นหลังจากสร้างการเชื่อมต่อ TCP กับเซิร์ฟเวอร์แล้ว แต่ก่อนที่จะส่งข้อมูล HTTP
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => BlockingResponse | undefined
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวของคำขอ HTTP ที่จะส่งออกพร้อมกับคำขอนี้
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
- returns
BlockingResponse | ไม่ระบุ
หากระบุ "blocking" ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
- ตัวกรอง
- extraInfoSpec
OnBeforeSendHeadersOptions[] ไม่บังคับ
onCompleted
chrome.webRequest.onCompleted.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnCompletedOptions[],
)
เริ่มทำงานเมื่อคำขอเสร็จสมบูรณ์
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- fromCache
บูลีน
ระบุว่าดึงข้อมูลการตอบกลับนี้จากแคชในดิสก์หรือไม่
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- ip
สตริง ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริง โปรดทราบว่าอาจเป็นที่อยู่ IPv6 ที่แท้จริง
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
- statusCode
ตัวเลข
รหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์แสดง
- statusLine
สตริง
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (เช่น การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
-
- ตัวกรอง
- extraInfoSpec
OnCompletedOptions[] ไม่บังคับ
onErrorOccurred
chrome.webRequest.onErrorOccurred.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnErrorOccurredOptions[],
)
เริ่มทำงานเมื่อเกิดข้อผิดพลาด
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ ค่านี้จะไม่มีอยู่หากคำขอเป็นการไปยังส่วนต่างๆ ของเฟรม
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- ข้อผิดพลาด
สตริง
คำอธิบายข้อผิดพลาด เราไม่รับประกันว่าสตริงนี้จะยังคงเข้ากันได้แบบย้อนหลังระหว่างรุ่นต่างๆ คุณต้องไม่แยกวิเคราะห์และดำเนินการตามเนื้อหาของไฟล์
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- fromCache
บูลีน
ระบุว่าดึงข้อมูลการตอบกลับนี้จากแคชในดิสก์หรือไม่
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- ip
สตริง ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริง โปรดทราบว่าอาจเป็นที่อยู่ IPv6 ที่แท้จริง
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
-
- ตัวกรอง
- extraInfoSpec
OnErrorOccurredOptions[] ไม่บังคับ
onHeadersReceived
chrome.webRequest.onHeadersReceived.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnHeadersReceivedOptions[],
)
ทริกเกอร์เมื่อได้รับส่วนหัวการตอบกลับ HTTP ของคำขอ
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => BlockingResponse | undefined
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
- statusCode
ตัวเลข
Chrome 43 ขึ้นไปรหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์แสดง
- statusLine
สตริง
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (เช่น การตอบกลับที่ไม่มีบรรทัดสถานะ)
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
- returns
BlockingResponse | ไม่ระบุ
หากระบุ "blocking" ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
- ตัวกรอง
- extraInfoSpec
OnHeadersReceivedOptions[] ไม่บังคับ
onResponseStarted
chrome.webRequest.onResponseStarted.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnResponseStartedOptions[],
)
เริ่มทำงานเมื่อได้รับไบต์แรกของเนื้อหาการตอบกลับ สำหรับคำขอ HTTP หมายความว่าบรรทัดสถานะและส่วนหัวการตอบกลับพร้อมใช้งาน
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- fromCache
บูลีน
ระบุว่าดึงข้อมูลการตอบกลับนี้จากแคชในดิสก์หรือไม่
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- ip
สตริง ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริง โปรดทราบว่าอาจเป็นที่อยู่ IPv6 ที่แท้จริง
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
- statusCode
ตัวเลข
รหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์แสดง
- statusLine
สตริง
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (เช่น การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
-
- ตัวกรอง
- extraInfoSpec
OnResponseStartedOptions[] ไม่บังคับ
onSendHeaders
chrome.webRequest.onSendHeaders.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnSendHeadersOptions[],
)
ทริกเกอร์ก่อนที่จะส่งคำขอไปยังเซิร์ฟเวอร์ (การแก้ไขการเรียกกลับ onBeforeSendHeaders ก่อนหน้านี้จะมองเห็นได้เมื่อมีการทริกเกอร์ onSendHeaders)
พารามิเตอร์
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
- รายละเอียด
ออบเจ็กต์
- documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
- documentLifecycleChrome 106 ขึ้นไป
วงจรของเอกสาร
- frameId
ตัวเลข
ค่า 0 บ่งชี้ว่าคำขอเกิดขึ้นในเฟรมหลัก ส่วนค่าบวกบ่งชี้รหัสของเฟรมย่อยที่คำขอเกิดขึ้น หากโหลดเอกสารของ (เฟรมย่อย) (
type
เป็นmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บ - frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
- ผู้เริ่ม
สตริง ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มคำขอ ซึ่งจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่โปร่งใส ระบบจะใช้สตริง "null"
- method
สตริง
เมธอด HTTP มาตรฐาน
- parentDocumentId
สตริง ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารหลักที่เป็นเจ้าของเฟรมนี้ ไม่ได้ตั้งค่าหากไม่มีองค์กรหลัก
- parentFrameId
ตัวเลข
รหัสของเฟรมที่ครอบเฟรมซึ่งส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
- requestHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวของคำขอ HTTP ที่ส่งออกไปพร้อมกับคำขอนี้
- requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงสามารถใช้เพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกันได้
- tabId
ตัวเลข
รหัสของแท็บที่เกิดคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
- timeStamp
ตัวเลข
เวลาที่ทริกเกอร์สัญญาณนี้ในหน่วยมิลลิวินาทีตั้งแต่ Epoch
- ประเภท
วิธีใช้ทรัพยากรที่ขอ
- URL
สตริง
-
-
- ตัวกรอง
- extraInfoSpec
OnSendHeadersOptions[] ไม่บังคับ