คำอธิบาย
ใช้ chrome.webRequest
API เพื่อติดตามและวิเคราะห์การเข้าชม ตลอดจนสกัดกั้น บล็อก หรือแก้ไขคำขอที่กำลังดำเนินการ
สิทธิ์
webRequest
คุณต้องประกาศสิทธิ์ "webRequest"
ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ API คำขอเว็บ รวมถึงสิทธิ์โฮสต์ที่จำเป็น หากต้องการสกัดกั้นคำขอทรัพยากรย่อย ส่วนขยายดังกล่าวต้องมีสิทธิ์เข้าถึงทั้ง URL ที่ขอและผู้เริ่มต้น เช่น
{
"name": "My extension",
...
"permissions": [
"webRequest"
],
"host_permissions": [
"*://*.google.com/*"
],
...
}
webRequestBlocking
ต้องลงทะเบียนเครื่องจัดการเหตุการณ์การบล็อก ตั้งแต่ไฟล์ Manifest V3 สิ่งนี้จะพร้อมใช้งาน สำหรับส่วนขยายที่ติดตั้งโดยนโยบายเท่านั้น
webRequestAuthProvider
ต้องใช้เมธอด onAuthRequired
โปรดดูการจัดการการตรวจสอบสิทธิ์
แนวคิดและการใช้งาน
วงจรของคำขอ
API คำขอเว็บจะกำหนด��ุดเหตุการณ์ที่เป็นไปตามวงจรของคำขอเว็บ คุณสามารถใช้เหตุการณ์เหล่านี้เพื่อสังเกตและวิเคราะห์การเข้าชม เหตุการณ์ซิงโครนัสบางเหตุการณ์จะช่วยให้คุณสกัดกั้น บล็อก หรือแก้ไขคำขอได้
ดูวงจรชีวิตของเหตุการณ์สำหรับคำขอที่สำเร็จได้ที่นี่ ตามด้วยคําจํากัดความของเหตุการณ์
onBeforeRequest
(ไม่บังคับแบบซิงโครนัส)- เริ่มทำงานเมื่อกำลังจะมีคำขอ เหตุการณ์นี้จะส่งก่อนการเชื่อมต่อ TCP และสามารถใช้เพื่อยกเลิกหรือเปลี่ยนเส้นทางคำขอได้
onBeforeSendHeaders
(ไม่บังคับแบบซิงโครนัส)- เริ่มทำงานเมื่อกำลังจะเกิดเหตุการณ์และเตรียมส่วนหัวเริ่มต้นแล้ว กิจกรรมนี้มีวัตถุประสงค์เพื่ออนุญาตให้ส่วนขยายเพิ่ม แก้ไข และลบส่วนหัวของคำขอ (*) โดยระบบจะส่งเหตุการณ์
onBeforeSendHeaders
ไปให้ผู้สมัครใช้บริการทุกคน ดังนั้นผู้สมัครใช้บริการรายอื่นอาจพยายามแก้ไขคำขอนี้ได้ ดูวิธีจัดการได้ที่ส่วนรายละเอียดการใช้งาน กิจกรรมนี้สามารถใช้ในการยกเลิกคำขอได้ onSendHeaders
- เริ่มทำงานหลังจากที่ส่วนขยายทั้งหมดมีโอกาสแก้ไขส่วนหัวของคำขอ และนำเสนอ (*) เวอร์ชันสุดท้าย ระบบจะทริกเกอร์เหตุการณ์ก่อนที่จะส่งส่วนหัวไปยังเครือข่าย เหตุการณ์นี้จะเป็นการให้ข้อมูล และจัดการแบบไม่พร้อมกัน โดยจะไม่อนุญาตให้แก้ไขหรือยกเลิกคำขอ
onHeadersReceived
(ไม่บังคับแบบซิงโครนัส)- เริ่มทำงานทุกครั้งที่ได้รับส่วนหัวการตอบกลับ HTTP(S) และเนื่องจากการเปลี่ยนเส้นทางและคำขอตรวจสอบสิทธิ์ อาจเกิดขึ้นหลายครั้งต่อคำขอ เหตุการณ์นี้มีไว้เพื่ออนุญาตให้ส่วนขยายเพิ่ม แก้ไข และลบส่วนหัวการตอบกลับ เช่น ส่วนหัว Content-Type ขาเข้า คำสั่งการแคชจะได้รับการประมวลผลก่อนเหตุการณ์นี้ ดังนั้นการแก้ไขส่วนหัว เช่น Cache-Control จะไม่มีผลต่อแคชของเบร��ว์เซอร์ และยังอนุญาตให้คุณยกเลิกหรือเปลี่ยนเส้นทางคำขอได้ด้วย
onAuthRequired
(ไม่บังคับแบบซิงโครนัส)- เริ่มทำงานเมื่อคำขอกำหนดให้มีการตรวจสอบสิทธิ์ผู้ใช้ คุณสามารถจัดการเหตุการณ์นี้แบบพร้อมกัน เพื่อให้ข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ โปรดทราบว่าส่วนขยายอาจให้ข้อมูลรับรองที่ไม่ถูกต้อง โปรดระวังอย่าป้อนข้อมูลเข้าสู่ระบบที่ไม่ถูกต้องซ้ำๆ หลายครั้ง ซึ่งอาจใช้เพื่อยกเลิกคำขอ
onBeforeRedirect
- เริ่มทำงานเมื่อกำลังจะทำการเปลี่ยนเส้นทาง การเปลี่ยนเส้นทางอาจทริกเกอร์โดยโค้ดตอบกลับ HTTP หรือส่วนขยายก็ได้ กิจกรรมนี้เป็นการให้ข้อมูลและจัดการแบบไม่พร้อมกัน แต่ไม่ได้อนุญาตให้ คุณแก้ไขหรือยกเลิกคำขอ
onResponseStarted
- เริ่มทำงานเมื่อได้รับไบต์แรกของเนื้อหาการตอบสนอง สำหรับคำขอ HTTP แถวสถานะและส่วนหัวการตอบกลับจะพร้อมใช้งาน กิจกรรมนี้เป็นการให้ข้อมูลและจัดการ แบบไม่พร้อมกัน โดยจะไม่อนุญาตให้แก้ไขหรือยกเลิกคำขอ
onCompleted
- เริ่มทำงานเมื่อประมวลผลคำขอเรียบร้อยแล้ว
onErrorOccurred
- เริ่มทำงานเมื่อประมวลผลคำขอไม่สำเร็จ
API คำขอเว็บจะรับประกันว่าคำขอ onCompleted
หรือ onErrorOccurred
แต่ละรายการจะเริ่มทำงานเป็นเหตุการณ์สุดท้าย โดยมีข้อยกเว้น 1 ข้อคือ หากมีการเปลี่ยนเส้นทางคำขอไปยัง URL ของ data://
แล้ว onBeforeRedirect
จะเป็นเหตุการณ์ที่รายงานล่าสุด
* โปรดทราบว่า API คำขอเว็บจะแสดง Abstraction ของสแต็กเครือข่ายไปยังส่วนขยาย ภายใน คำขอ URL 1 รายการจะแยกออกเป็นคำขอ HTTP หลายรายการได้ (เช่น ดึงช่วงไบต์แต่ละช่วงจากไฟล์ขนาดใหญ่) หรือจัดการโดยสแต็กเครือข่ายโดยไม่ต้องสื่อสารกับเครือข่าย ด้วยเหตุนี้ API จึงไม่มีส่วนหัว HTTP สุดท้ายที่ส่งไปยังเครือข่าย เช่น ส่วนหัวทั้งหมดที่เกี่ยวข้องกับการแคชจะมองไม่เห็นส่วนขยายนั้น
ปัจจุบันไม่ได้ระบุส่วนหัวต่อไปนี้ไว้ในเหตุการณ์ onBeforeSendHeaders
เราไม่รับประกันว่ารายการนี้จะสมบูรณ์หรือเสถียร
- การให้สิทธิ์
- Cache-Control
- การเชื่อมต่อ
- Content-Length
- โฮสต์
- หากแก้ไข-ตั้งแ��่
- หากไม่มี-ตรงกัน
- ช่วงราคา
- ข้อมูลบางส่วน
- ปรากมา
- การให้สิทธิ์พร็อกซี
- การเชื่อมต่อพร็อกซี
- การเข้ารหัสการโอนข้อมูล
ตั้งแต่ Chrome 79 เป็นต้นไป การแก้ไขส่วนหัวของคำขอจะมีผลต่อการตรวจสอบกลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) หากส่วนหัวที่แก้ไขสำหรับคำขอข้ามต้นทางไม่ตรงตามเกณฑ์ จะส่งผลให้มีการส่งการตรวจสอบล่วงหน้าสำหรับ CORS เพื่อถามเซิร์ฟเวอร์ว่ายอมรับส่วนหัวดังกล่าวได้ไหม หากจำเป็นต้องแก้ไขส่วนหัวในลักษณะที่เป็นการละเมิดโปรโตคอล CORS คุณต้องระบุ 'extraHeaders'
ใน opt_extraInfoSpec
ในทางกลับกัน การแก้ไขส่วนหัวการตอบกลับไม่ได้หลอกลวงการตรวจสอบ CORS หากต้องการหลอกลวงโปรโตคอล CORS คุณต้องระบุ 'extraHeaders'
สำหรับการแก้ไขการตอบกลับด้วย
ตั้งแต่ Chrome 79 เป็นต้นไป webRequest API ไม่ขัดขวางคำขอการตรวจสอบล่วงหน้าและการตอบสนองของ CORS โดยค่าเริ่มต้น การตรวจสอบ URL ของคำขอล่วงหน้าสำหรับ CORS จะแสดงให้ส่วนขยายเห็นหากมีผู้ฟัง��ี่มี 'extraHeaders'
ระบุใน opt_extraInfoSpec
สำหรับ URL คำขอ
onBeforeRequest
ก็ใช้ 'extraHeaders'
จาก Chrome 79 ได้เช่นกัน
ตั้งแต่ Chrome 79 เป็นต้นไป จะไม่ได้ให้ส่วนหัวของคำขอต่อไปนี้ไว้ และจะแก้ไขหรือลบไม่ได้โดยไม่ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
- Origin
ตั้งแต่ Chrome 72 เป็นต้นไป หากจำเป็นต้องแก้ไขคำตอบก่อนที่การบล็อกการอ่านข้ามต้นทาง (CORB) จะบล็อกการตอบกลับได้ คุณจะต้องระบุ 'extraHeaders'
ใน opt_extraInfoSpec
ตั้งแต่ Chrome 72 เป็นต้นไป ระบบจะไม่ระบุส่วนหัวของคำขอต่อไปนี้ และแก้ไขหรือนำออกไม่ได้โดยไม่ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
- ภาษาที่ยอมรับ
- ยอมรับการเข้ารหัส
- ผู้อ้างอิง
- คุกกี้
ตั้งแต่ Chrome 72 เป็นต้นไป ส่วนหัวการตอบกลับ Set-Cookie
จะไม่ได้ให้ไว้ และจะแก้ไขหรือนําออกโดยไม่ได้ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
ไม่ได้
ตั้งแต่ Chrome 89 เป็นต้นไป คุณจะไม่สามารถแก้ไขหรือนำส่วนหัวการตอบกลับ X-Frame-Options
ออกได้อย่างมีประสิทธิภาพหากไม่ระบุ 'extraHeaders'
ใน opt_extraInfoSpec
webRequest API จะแสดงเฉพาะคำขอที่ส่วนขยายมีสิทธิ์ดูเท่านั้น ตามสิทธิ์โฮสต์ นอกจากนี้ รูปแบบที่เข้าถึงได้เท่านั้น ได้แก่ 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
และคำขอที่มีความละเอียดอ่อนอื่นๆ ซึ่งเป็นหัวใจหลักในฟังก์ชันการทำงานของเบราว์เซอร์ นอกจากนี้ XMLHttpRequest แบบซิงโครนัสจากส่วนขยายยังได้รับการซ่อนจากการบล็อกตัวแฮนเดิลเหตุการณ์เพื่อป้องกันการติดตาย โปรดทราบว่าสำหรับรูปแบบที่รองรับบางรูปแบบ ชุดเหตุการณ์ที่มีอยู่อาจถูกจำกัดเนื่องจากลักษณะของโปรโตคอลที่เกี่ยวข้อง ตัวอย่างเช่น สำหรับไฟล์: รูปแบบ อาจมีการจัดส่งเฉพาะ onBeforeRequest
, onResponseStarted
, onCompleted
และ onErrorOccurred
เท่านั้น
WebRequest API รองรับการสกัดกั้นคำขอแฮนด์เชค WebSocket ตั้งแต่ Chrome 58 เป็นต้นไป เนื่องจากแฮนด์เชคดำเนินการโดยวิธีการของคำขออัปเกรด HTTP ขั้นตอนของการดำเนินการจึงพอดีกับโมเดล webRequest แบบ HTTP โปรดทราบว่า API จะไม่สกัดกั้นสิ่งต่อไปนี้
- ข้อความแต่ละรายการที่ส่งผ่านการเชื่อมต่อ WebSocket ที่มีอยู่
- กำลังปิดการเชื่อมต่อ WebSocket
คำขอ WebSocket ไม่รองรับการเปลี่ยนเส้นทาง
ตั้งแต่ Chrome 72 เป็นต้นไป ส่วนขยายจะสกัดกั้นคำขอได้เมื่อมีสิทธิ์โฮสต์ต่อทั้ง URL ที่ขอและผู้เริ่มคำขอเท่านั้น
ตั้งแต่ Chrome 96 เป็นต้นไป webRequest API รองรับการสกัดกั้น WebTransport ผ่านคำขอแฮนด์เชค HTTP/3 เนื่องจากแฮนด์เชคดำเนินการโดยวิธีการของคำขอ HTTP CONNECT ดังนั้นขั้นตอนของแฮนด์เชคจึงพอดีกับโมเดล WebRequest แบบ HTTP ข้อควรทราบมีดังนี้
- เมื่อสร้างเซสชันแล้ว ส่วนขยายจะสังเกตหรือแทรกแซงเซสชันผ่าน webRequest API ไม่ได้
- ระบบจะไม่สนใจการแก้ไขส่วนหัวของคำขอ HTTP ใน
onBeforeSendHeaders
- WebTransport ผ่าน HTTP/3 ไม่รองรับการเปลี่ยนเส้นทางและการตรวจสอบสิทธิ์
รหัสคำขอ
คำขอแต่ละรายการจะระบุด้วยรหัสคำขอ รหัสนี้ไม่ซ้ำกันภายในเซสชันเบราว์เซอร์และบริบทของส่วนขยาย ค่านี้ยังคงอยู่ในวงจรของคำขอและสามารถใช้เพื่อจับคู่เหตุการณ์สำหรับคำขอเดียวกัน โปรดทราบว่าคำขอ HTTP หลายรายการจะแมปกับคำขอเว็บรายการเดียวในกรณีที่มีการเปลี่ยนเส้นทาง HTTP หรือการตรวจสอบสิทธิ์ HTTP
กำลังลงทะเบียน Listener เหตุการณ์
หากต้องการลงทะเบียน Listener เหตุการณ์สำหรับคำขอเว็บ ให้ใช้รูปแบบอื่นในฟังก์ชัน addListener()
ปกติ นอกจากการระบุฟังก์ชันเรียกกลับแล้ว คุณต้องระบุอาร์กิวเมนต์ตัวกรองด้วย และอาจระบุอาร์กิวเมนต์ข้อมูลเพิ่มเติมที่จะมีหรือไม่ก็ได้
อาร์กิวเมนต์ 3 ตัวใน addListener()
ของ API คำขอเว็บมีคำจำกัดความดังต่อไปนี้
var callback = function(details) {...};
var filter = {...};
var opt_extraInfoSpec = [...];
ต่อไปนี้คือตัวอย่างการฟ��งเหตุการณ์ onBeforeRequest
chrome.webRequest.onBeforeRequest.addListener(
callback, filter, opt_extraInfoSpec);
การเรียก addListener()
แต่ละครั้งจะใช้ฟังก์ชันเรียกกลับที่จำเป็นเป็นพารามิเตอร์แรก ฟังก์ชันเรียกกลับนี้จะส่งผ่านพจนานุกรมที่มีข้อมูลเกี่ยวก��บคำขอ URL ���������������� ��้อมูลในพจนานุกรมนี้ขึ้นอยู่กับประเภทเหตุการณ์ที่เฉพาะเจาะจงรวมถึงเนื้อหาของ opt_extraInfoSpec
หากอาร์เรย์ opt_extraInfoSpec
ที่ไม่บังคับมีสตริง 'blocking'
(อนุญาตเฉพาะบางเหตุการณ์) ระบบจะจัดการฟังก์ชันเรียกกลับแบบพร้อมกัน ซึ่งหมายความว่าคำขอจะถูกบล็อก
จนกว่าฟังก์ชันเรียกกลับจะแสดงผล ในกรณีนี้ โค้ดเรียกกลับอาจแสดงผล 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
- รหัสแท็บ
- ตัวระบุสำหรับ 1 แท็บ
- รหัสกรอบเวลา
- ตัวระบุสำหรับหน้าต่าง
คุณระบุสตริงใน 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']
);
รายละเอียดการใช้งาน
คุณควรทำความเข้าใจรายละเอียดการใช้งานหลายอย่างต่อไปนี้เมื่อพัฒนาส่วนขยายที่ใช้ API คำขอเว็บ
web_accessible_resources
เมื่อส่วนขยายใช้ WebRequest API เพื่อเปลี่ยนเส้นทางคำขอทรัพยากรสาธารณะไปยังทรัพยากรที่เข้าถึงบนเว็บไม่ได้ ส่วนขยายจะถูกบล็อกและจะทำให้เกิดข้อผิดพลาด การดำเนินการข้างต้นจะยังคงมีผล แม้ว่าทรัพยากรที่ไม่สามารถเข้าถึงบนเว็บจะเป็นของส่วนขยายการเปลี่ยนเส้นทางก็ตาม หากต้องการประกาศทรัพยากรสำหรับใช้กับ declarativeWebRequest API จะต้องมีการประกาศและป้อนข้อมูลอาร์เรย์ "web_accessible_resources"
ในไฟล์ Manifest ตามที่ระบุไว้ที่นี่
การแก้ไขข้อขัดแย้ง
ในการใช้งาน API คำขอเว็บในปัจจุบัน ระบบจะถือว่าคำขอยกเลิกหากมีส่วนขยายอย่างน้อย 1 รายการสั่งให้ยกเลิกคำขอ หากส่วนขยายยกเลิกคำขอ ส่วนขยายทั้งหมดจะได้รับแจ้งจากเหตุการณ์ onErrorOccurred
ในการเปลี่ยนเส้นทางคำขอหรือแก้ไขส่วนหัวได้ทีละ 1 รายการเท่าน��้น หากมีส่วนขยายมากกว่า 1 รายการพยายามแก้ไขคำขอ ส่วนขยายที่ติดตั้งล่าสุดจะชนะ และไม่สนใจส่วนขยายอื่นๆ ทั้งหมด ส่วนขยายจะไม่ได้รับการแจ้งเตือนหากคำสั่งในการแก้ไขหรือเปลี่ยนเส้นทาง
ถูกละเว้น
การแคช
Chrome จะใช้แคช 2 แบบ ได้แก่ แคชในดิสก์และแคชในหน่วยความจำที่รวดเร็วมาก อายุการใช้งานของแคชในหน่วยความจำจะแนบไปกับอายุการใช้งานของกระบวนการแสดงผลซึ่งสอดคล้องกับแท็บอย่างคร่าวๆ
คำขอที่ตอบจากแคชในหน่วยความจำจะไม่ปรากฏสำหรับ 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-Sample
ประเภท
BlockingResponse
แสดงผลค่าของเครื่องจัดการเหตุการณ์ที่มีการใช้ extraInfoSpec ที่ "block" อยู่ อนุญาตให้เครื่องจัดการเหตุการณ์แก้ไขคำขอเครือข่าย
พร็อพเพอร์ตี้
-
authCredentials
ออบเจ็กต์ ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onAuthrequired เท่านั้น หากตั้งค่าไว้ คำขอจะสร้างขึ้นโดยใช้ข้อมูลเข้าสู่ระบบที่ระบุ
-
รหัสผ่าน
string
-
ชื่อ��ู้ใช้
string
-
-
ยกเลิก
บูลีน ไม่บังคับ
หากเป็นจริง ระบบจะยกเลิกคำขอ การดำเนินการนี้จะป้องกันไม่ให้ส่งคำขอ ซึ่งสามารถใช้เป็นการตอบกลับเหตุการณ์ onBeforeRequest, onAfterSendHeaders, onHeadersReceived และ onAuthrequired
-
redirectUrl
string ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onbeforeRequest และ onHeadersReceived เท่านั้น หากตั้งค่าไว้ ระบบจะป้องกันไม่ให้ส่ง/ดำเนินการตามคำขอเดิมและเปลี่ยนเส้นทางไปยัง URL ที่ระบุแทน อนุญาตให้เปลี่ยนเส้นทางไปยังรูปแบบที่ไม่ใช่ HTTP เช่น
data:
การเปลี่ยนเส้นทางที่เริ่มต้นโดยการเปลี่ยนเส้นทางจะใช้เมธอดคำขอเดิมสำหรับการเปลี่ยนเส้นทาง โดยมีข้อยกเว้น 1 ข้อคือ ถ้าการเปลี่ยนเส้นทางเริ่มต้นขึ้นที่ขั้นตอน onHeadersReceived จะมีการเปลี่ยนเส้นทางโดยใช้เมธอด GET ระบบจะละเว้นการเปลี่ยนเส้นทางจาก URL ที่มีรูปแบบws://
และwss://
-
requestHeaders
HttpHeaders ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onbeforeSendHeaders เท่านั้น หากตั้งค่าไว้ ระบบจะส่งคำขอโดยใช้ส่วนหัวของคำขอเหล่านี้แทน
-
responseHeaders
HttpHeaders ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onHeadersReceived เท่านั้น หากตั้งค่าไว้ ระบบจะถือว่าเซิร์ฟเวอร์ตอบสนองด้วยส่วนหัวการตอบกลับเหล่านี้แทน แสดงผล
responseHeaders
เฉพาะหากคุณต้องการแก้ไขส่วนหัวเพื่อจำกัดจำนวนความขัดแย้ง (มีส่วนขยายเพียงรายการเดียวที่แก้ไขresponseHeaders
ได้สำหรับคำขอแต่ละรายการ)
FormDataItem
มีข้อมูลที่ส่งภายในข้อมูลแบบฟอร์ม สำหรับรูปแบบ URL ที่มีการเข้ารหัส จะจัดเก็บเป็นสตริง หากข้อมูลเป็นสตริง utf-8 และเป็น ArrayBuffer ในกรณีอื่นๆ สำหรับข้อมูลแบบฟอร์มคือ ArrayBuffer หากข้อมูลแบบฟอร์มแสดงถึงการอัปโหลดไฟล์ ไฟล์ดังกล่าวจะเป็นสตริงที่มีชื่อไฟล์ (หากมี)
ค่าแจกแจง
ArrayBuffer
string
HttpHeaders
อาร์เรย์ของส่วนหัว HTTP ส่วนหัวแต่ละรายการจะแสดงเป็นพจนานุกรมที่มีคีย์ name
และ value
หรือ binaryValue
ประเภท
ออบเจ็กต์[]
พร็อพเพอร์ตี้
-
binaryValue
number[] ไม่บังคับ
ค่าของส่วนหัว HTTP หากไม่สามารถแสดงด้วย UTF-8 ได้ ซึ่งจะเก็บไว้เป็นค่าไบต์เดี่ยว (0..255)
-
ชื่อ
string
ชื่อของส่วนหัว HTTP
-
value
string ไม่บังคับ
ค่าของส่วนหัว HTTP หากแสดงด้วย UTF-8 ได้
IgnoredActionType
ค่าแจกแจง
"request_headers"
"response_headers"
"auth_credentials"
OnAuthRequiredOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์
"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล
"asyncBlock"
ระบุว่าฟังก์ชันการติดต่อกลับมีการจัดการแบบไม่พร้อมกัน
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnBeforeRedirectOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnBeforeRequestOptions
ค่าแจกแจง
"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล
"requestBody"
ระบุว่าควรรวมเนื้อหาของคำขอไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnBeforeSendHeadersOptions
ค่าแจกแจง
"requestHeaders"
ระบุว่าควรรวมส่วนหัวของคำขอไว้ในเหตุการณ์
"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnCompletedOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnErrorOccurredOptions
ค่า
"extraHeaders"
OnHeadersReceivedOptions
ค่าแจกแจง
"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล
"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnResponseStartedOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
OnSendHeadersOptions
ค่าแจกแจง
"requestHeaders"
ระบุว่าควรรวมส่วนหัวของคำขอไว้ในเหตุการณ์
"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)
RequestFilter
ออบเจ็กต์ที่อธิบายตัวกรองที่��ะใช้กับเหตุการณ์ webRequest
พร็อพเพอร์ตี้
-
tabId
ตัวเลข ไม่บังคับ
-
ประเภท
ResourceType[] ไม่บังคับ
รายการประเภทคำขอ คำขอที่ไม่ตรงกับประเภทใดๆ จะถูกกรองออก
-
urls
ส��ร����[]
รายการ 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 พร้อมสําเนาข้อมูล
-
ไฟล์
string ไม่บังคับ
สตริงที่มีเส้นทางและชื่อไฟล์
พร็อพเพอร์ตี้
MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES
จำนวนครั้งสูงสุดที่เรียกใช้ handlerBehaviorChanged
ได้ต่อช่วงเวลาต่อเนื่อง 10 นาที handlerBehaviorChanged
เป็นการเรียกใช้ฟังก์ชันที่มีค่าใช้จ่ายสูงที่ไม่ควรเรียกใช้บ่อย
ค่า
20
วิธีการ
handlerBehaviorChanged()
chrome.webRequest.handlerBehaviorChanged(
callback?: function,
)
ต้องมีการเรียกเมื่อมีการเปลี่ยนแปลงการทำงานของตัวแฮนเดิล webRequest เพื่อป้องกันการจัดการที่ไม่ถูกต้องเนื่องจากการแคช การเรียกใช้ฟังก์ชันนี้มีค่าใช้จ่ายสูง อย่าเรียกมันบ่อย
พารามิเตอร์
-
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้() => void
การคืนสินค้า
-
Promise<void>
Chrome 116 ขึ้นไปManifest V3 ขึ้นไปรองรับคำสัญญา แต่จะใช้โค้ดเรียกกลับเพื่อความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 ฟีเจอร์ในการเรียกใช้ฟังก์ชันเดียวกันได้ คำสัญญาจะยุติด้วยประเภทเดียวกันกับที่ส่งไปยังโค้ดเรียกกลับ
เหตุการณ์
onActionIgnored
chrome.webRequest.onActionIgnored.addListener(
callback: function,
)
เริ่มทำงานเมื่อละเว้นการแก้ไขที่เสนอของส่วนขยายกับคำขอเครือข่าย กรณีนี้จะเกิดขึ้นในกรณีที่ขัดแย้งกับส่วนขยายอื่นๆ
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
การดำเนินการ
การดำเนินการที่เสนอซึ่งถูกละเว้น
-
requestId
string
รหัสของ��ำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
-
onAuthRequired
chrome.webRequest.onAuthRequired.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnAuthRequiredOptions[],
)
เริ่มทำงานเมื่อได้รับการตรวจสอบสิทธิ์ที่ไม่สำเร็จ Listener มีตัวเลือก 3 อย่าง ได้แก่ สามารถให้ข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ ยกเลิกคำขอและแสดงหน้าข้อผิดพลาด หรือไม่ดำเนินการใดๆ กับระบบทดสอบก็ได้ หากระบุข้อมูลเข้าสู่ระบบของผู้ใช้ที่ไม่ดี อาจมีการเรียกใช้หลายครั้งสําหรับคําขอเดียวกัน โปรดทราบว่าคุณต้องระบุโหมด 'blocking'
หรือ 'asyncBlocking'
เพียงโหมดใดโหมดหนึ่งในพารามิเตอร์ extraInfoSpec
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object, asyncCallback?: function) => BlockingResponse | undefined
-
รายละเอียด
ออบเจ็กต์
-
ผู้ท้าชิง
ออบเจ็กต์
เซิร์ฟเวอร์ที่ขอการตรวจสอบสิทธิ์
-
ผู้จัด
string
-
พอร์ต
ตัวเลข
-
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว�� (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ���ม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
isProxy
boolean
True for Proxy-Authenticate, เท็จสำหรับ WWW-Authenticate
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
ขอบเขต
string ไม่บังคับ
ขอบเขตการตรวจสอบสิทธิ์ที่เซิร์ฟเวอร์จัดเตรียมให้ ถ้ามี
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
-
สคีม
string
รูปแบบการตรวจสอบสิทธิ์ เช่น พื้นฐานหรือไดเจสต์
-
statusCode
ตัวเลข
Chrome 43 ขึ้นไปรหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์ส่งคืน
-
statusLine
string
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (กล่าวคือ การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
asyncCallback
ฟังก์ชัน ไม่บังคับ
Chrome 58 ขึ้นไปพารามิเตอร์
asyncCallback
มี��ักษณะดังนี้(response: BlockingResponse) => void
-
การตอบกลับ
-
-
returns
BlockingResponse | ไม่ระบุ
หากระบุ "block" ไว้ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
-
ฟิลเตอร์
-
extraInfoSpec
OnAuthRequiredOptions[] ไม่บังคับ
onBeforeRedirect
chrome.webRequest.onBeforeRedirect.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeRedirectOptions[],
)
เริ่มทำงานเมื่อกำลังจะเกิดการเปลี่ยนเส้นทางที่เริ่มโดยเซิร์ฟเวอร์
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
fromCache
boolean
ระบุว่าการตอบสนองนี้ดึงมาจากแคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริงๆ โปรดทราบว่านี่อาจเป็นที่อยู่ IPv6 ตามจริง
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
redirectUrl
string
URL ใหม่
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการเปลี่ยนเส้นทางนี้
-
statusCode
ตัวเลข
รหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์ส่งคืน
-
statusLine
string
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (กล่าวคือ การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
-
ฟิลเตอร์
-
extraInfoSpec
OnBeforeRedirectOptions[] ไม่บังคับ
onBeforeRequest
chrome.webRequest.onBeforeRequest.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnBeforeRequestOptions[],
)
เริ่มทำงานเมื่อกำลังจะมีคำขอ
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => BlockingResponse | undefined
-
รายละเอียด
ออบเจ็กต์
-
documentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycle
extensionTypes.DocumentLifecycle ไม่บังคับ
Chrome 106 ขึ้นไปวงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameType
extensionTypes.FrameType ไม่บังคับ
Chrome 106 ขึ้นไปประเภทเฟรมที่เกิดคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestBody
ออบเจ็กต์ ไม่บังคับ
มีข้อมูลเนื้อหาของคำขอ HTTP ระบุเมื่อ extraInfoSpec มี "requestBody" เท่านั้น
-
error
string ไม่บังคับ
ข้อผิดพลาดเมื่อรับข้อมูลเนื้อหาของคำขอ
-
formData
ออบเจ็กต์ ไม่บังคับ
หากเมธอดคำขอคือ POST และส่วนเนื้อหาเป็นลำดับคู่คีย์-ค่าที่เข้ารหัสในรูปแบบ UTF8 ซึ่งเข้ารหัสเป็น Multipart/form-data หรือ application/x-www-form-urlencrypted จะมีพจนานุกรมนี้อยู่และแต่ละคีย์จะมีรายการค่าทั้งหมดสำหรับคีย์นั้น หากข้อมูลเป็นสื่อประเภทอื่น หรือหากข้อมูลผิดรูปแบบ ระบบจะไม่แสดงพจนานุกรม ค่าตัวอย่างของพจนานุกรมนี้คือ {'key': ['value1', 'value2']}
-
RAW
UploadData[] ไม่บังคับ
หากเมธอดคำขอคือ PUT หรือ POST และยังไม่ได้แยกวิเคราะห์ส่วนเนื้อหาใน formData องค์ประกอบเนื้อหาของคำขอที่ไม่ได้แยกวิเคราะห์จะอยู่ในอาร์เรย์นี้
-
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
returns
BlockingResponse | ไม่ระบุ
หากระบุ "block" ไว้ในพารามิเตอร์ "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
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวของคำขอ HTTP ที่จะส่งพร้อมกับคำขอนี้
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
returns
BlockingResponse | ไม่ระบุ
หากระบุ "block" ไว้ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
-
ฟิลเตอร์
-
extraInfoSpec
OnBeforeSendHeadersOptions[] ไม่บังคับ
onCompleted
chrome.webRequest.onCompleted.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnCompletedOptions[],
)
เริ่มทำงานเมื่อคำขอเสร็จสมบูรณ์
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
fromCache
boolean
ระบุว่าการตอบสนองนี้ดึงมาจากแคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต��นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริงๆ โปรดทราบว่านี่อาจเป็นที่อยู่ IPv6 ตามจริง
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
-
statusCode
ตัวเลข
รหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์ส่งคืน
-
statusLine
string
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (กล่าวคือ การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
-
ฟิลเตอร์
-
extraInfoSpec
OnCompletedOptions[] ไม่บังคับ
onErrorOccurred
chrome.webRequest.onErrorOccurred.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnErrorOccurredOptions[],
)
เริ่มทำงานเมื่อเกิดข้อผิดพลาด
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ ค่านี้จะไม่แสดงหากคำขอเป็นการนำทางของเฟรม
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
error
string
คำอธิบายข้อผิดพลาด เราไม่รับประกันว่าสตริงนี้จะยังคงใช้งานร่วมกันได้แบบย้อนหลังระหว่างรุ่น คุณต้องไม่แยกวิเคราะห์และดำเนินการตามเนื้อหา
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
fromCache
boolean
ระบุว่าการตอบสนองนี้ดึงมาจากแคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริงๆ โปรดทราบว่านี่อาจเป็นที่อยู่ IPv6 ตามจริง
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
-
ฟิลเตอร์
-
extraInfoSpec
OnErrorOccurredOptions[] ไม่บังคับ
onHeadersReceived
chrome.webRequest.onHeadersReceived.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnHeadersReceivedOptions[],
)
เริ่มทำงานเมื่อได้รับส่วนหัวการตอบกลับ HTTP ของคำขอ
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => BlockingResponse | undefined
-
รายละเอียด
ออบเจ็กต์
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับของ HTTP ที่ได้รับพร้อมการตอบกลับนี้
-
statusCode
ตัวเลข
Chrome 43 ขึ้นไปรหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์ส่งคืน
-
statusLine
string
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (กล่าวคือ การตอบกลับที่ไม่มีบรรทัดสถานะ)
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
returns
BlockingResponse | ไม่ระบุ
หากระบุ "block" ไว้ในพารามิเตอร์ "extraInfoSpec" Listener เหตุการณ์ควรแสดงผลออบเจ็กต์ประเภทนี้
-
-
ฟิลเตอร์
-
extraInfoSpec
OnHeadersReceivedOptions[] ไม่บังคับ
onResponseStarted
chrome.webRequest.onResponseStarted.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnResponseStartedOptions[],
)
เริ่มทำงานเมื่อได้รับไบต์แรกของเนื้อหาการตอบสนอง สำหรับคำขอ HTTP จะหมายความว่าบรรทัดสถานะและส่วนหัวการตอบกลับพร้อมใช้งาน
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่��้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
fromCache
boolean
ระบุว่าการตอบสนองนี้ดึงมาจากแคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สต��ิง "null"
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่ส่งคำขอไปจริงๆ โปรดทราบว่านี่อาจเป็นที่อยู่ IPv6 ตามจริง
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือก��ะดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
-
statusCode
ตัวเลข
รหัสสถานะ HTTP มาตรฐานที่เซิร์ฟเวอร์ส่งคืน
-
statusLine
string
บรรทัดสถานะ HTTP ของการตอบกลับหรือสตริง "HTTP/0.9 200 OK" สำหรับการตอบกลับ HTTP/0.9 (กล่าวคือ การตอบกลับที่ไม่มีบรรทัดสถานะ) หรือสตริงว่างหากไม่มีส่วนหัว
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
-
ฟิลเตอร์
-
extraInfoSpec
OnResponseStartedOptions[] ไม่บังคับ
onSendHeaders
chrome.webRequest.onSendHeaders.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnSendHeadersOptions[],
)
เริ่มทำงานก่อนที่จะส่งคำขอไปยังเซิร์ฟเวอร์ (การแก้ไข onAfterSendHeaders callbacks ก่อนหน้าจะแสดงเมื่อ onSendHeaders เริ่มทำงาน)
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
documentId
string
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
วงจรการใช้งานเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทเฟรมที่เกิดคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่ส่งคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากต้นทางนี้เป็นแบบทึบ ระบบจะใช้สตริง "null"
-
method
string
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ไม่มีการตั้งค่าหากไม่มีตัวเลือกระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสของเฟรมที่รวมเฟรมที่ส่งคำขอ ตั้งค่าเป็น -1 หากไม่มีเฟรมหลัก
-
requestHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวของคำขอ HTTP ที่ส่งออกพร้อมคำขอนี้
-
requestId
string
รหัสของคำขอ รหัสคําขอจะไม่ซ้ำกันในเซสชันของเบราว์เซอร์ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นในการเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่สัญญาณนี้ทริกเกอร์ โดยมีหน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
url
string
-
-
-
ฟิลเตอร์
-
extraInfoSpec
OnSendHeadersOptions[] ไม่บังคับ