คำอธิบาย
ใช้ 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 คำขอเว็บจะแสดงการแอบสแต็กเครือข่ายในส่วนขยาย คำขอ URL ภายใน อาจแบ่งออกเป็นคำขอ HTTP หลายรายการ (ตัวอย่างเช่น เพื่อดึงข้อมูล ช่วงไบต์จากไฟล์ขนาดใหญ่) หรือสามารถจัดการโดยสแต็กเครือข่ายโดยไม่ต้องสื่อสารกับ เครือข่าย ด้วยเหตุนี้ API จึงไม่มีส่วนหัว HTTP สุดท้ายที่ส่งไปยัง เครือข่าย ตัวอย่างเช่น ส่วนขยายทั้งหมดจะมองไม่เห็นส่วนหัวทั้งหมดที่เกี่ยวข้องกับการแคช
ปัจจุบันไม่ได้ระบุส่วนหัวต่อไปนี้กับเหตุการณ์ onBeforeSendHeaders
รายการนี้
ไม่มีการรับประกันว่าจะสมบูรณ์หรือเสถียร
- การให้สิทธิ์
- Cache-Control
- การเชื่อมต่อ
- ความยาวของเนื้อหา
- โฮสต์
- หากแก้ไขตั้งแต่
- หากไม่มี-ตรง
- ถ้า-ช่วง
- ข้อมูลบางส่วน
- แพรคมา
- การให้สิทธิ์พร็อกซี
- การเชื่อมต่อพร็อกซี
- Transfer-Encoding
ตั้งแต่ Chrome 79 เป็นต้นไป การแก้ไขส่วนหัวของคำขอจะส่งผลต่อการแชร์ทรัพยากรข้ามโดเมน (CORS)
หากส่วนหัวที่แก้ไขสำหรับคำขอข้ามต้นทางไม่เป็นไปตามเกณฑ์ จะส่งผลให้
การส่งการตรวจสอบล่วงหน้าสำหรับ CORS เพื่อขอเซิร์ฟเวอร์ว่ายอมรับส่วนหัวดังกล่าวได้หรือไม่ หากคุณจำเป็นต้อง
แก้ไขส่วนหัวในลักษณะที่เป็นการละเมิดโปรโตคอล CORS คุณต้องระบุ 'extraHeaders'
ใน
opt_extraInfoSpec
ในทางกลับกัน การแก้ไขส่วนหัวของการตอบกลับไม่ทำงานเพื่อหลอกลวง CORS
หากต้องการหลอกลวงโปรโตคอล CORS คุณต้องระบุ 'extraHeaders'
สำหรับ
การแก้ไขคำตอบ
ตั้งแต่ Chrome 79 เป็นต้นไป WebRequest API จะไม่สกัดกั้นคำขอการตรวจสอบล่วงหน้าสำหรับ CORS และ
คำตอบโดยค่าเริ่มต้น การตรวจสอบ CORS ล่วงหน้าสำหรับ URL คำขอจะปรากฏต่อส่วนขยายหากมี
Listener ที่มี '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
:
- ภาษาที่ยอมรับ
- Accept-Encoding
- ผู้อ้างอิง
- คุกกี้
ตั้งแต่ 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
และข้อมูลอื่นๆ ที่มีความละเอียดอ่อน
คำขอฟังก์ชันการทำงานหลักของเบราว์เซอร์ นอกจากนี้ XMLHttpRequests แบบซิงโครนัสจากส่วนขยายของคุณ
ซ่อนจากการบล็อกเครื่องจัดการกิจกรรมเพื่อป้องกันการติดตาย โปรดทราบว่าสำหรับ
แผนที่สนับสนุน ชุดเหตุการณ์ที่ใช้ได้อาจมีข้อจำกัดเนื่องจากลักษณะของ
โปรโตคอลที่เกี่ยวข้อง ตัวอย่างเช่น สำหรับไฟล์: Scheme จะมีเพียง onBeforeRequest
โดยระบบอาจส่ง onResponseStarted
, onCompleted
และ onErrorOccurred
ตั้งแต่ Chrome 58 เป็นต้นไป WebRequest API จะรองรับการสกัดกั้นคำขอแฮนด์เชค WebSocket เนื่องจากแฮนด์เชคนั้นดำเนินการผ่านคำขออัปเกรด HTTP ดังนั้นขั้นตอนจึงเหมาะกับ HTTP โมเดล webRequest โปรดทราบว่า 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()
ปกติ
ฟังก์ชัน นอกจากการระบุฟังก์ชัน Callback แล้ว คุณยังต้องระบุอาร์กิวเมนต์ตัวกรอง และอาจระบุอาร์กิวเมนต์ข้อมูลเพิ่มเติมด้วย
อาร์กิวเมนต์ 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 จะได้รับการจัดการแบบซิงโครนัส ซึ่งหมายความว่าคำขอนั้น
ถูกบล็อกจนกว่าฟังก์ชัน Callback จะกลับมา ในกรณีนี้ Callback อาจส่งคืน
webRequest.BlockingResponse
ซึ่งกำหนดวงจรชีวิตเพิ่มเติมของคำขอ แล้วแต่กรณี
ในบริบท การตอบกลับนี้อนุญาตให้ยกเลิกหรือเปลี่ยนเส้นทางคำขอ (onBeforeRequest
)
การยกเลิกคำขอหรือแก้ไขส่วนหัว (onBeforeSendHeaders
, onHeadersReceived
) และ
การยกเลิกคำขอหรือระบุข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ (onAuthRequired
)
ถ้าอาร์เรย์ opt_extraInfoSpec
ที่ไม่บังคับมีสตริง 'asyncBlocking'
แทน (เฉพาะ
อนุญาตสำหรับ onAuthRequired
) ส่วนขยายจะสร้าง webRequest.BlockingResponse
ได้
แบบไม่พร้อมกัน
filter
ของ webRequest.RequestFilter
อนุญาตการจํากัดคําขอสำหรับเหตุการณ์
เรียกใช้ในมิติข้อมูลต่างๆ ได้แก่
- URL
- รูปแบบ URL เช่น
*://www.google.com/foo*bar
- ประเภท
- ประเภทคำขอ เช่น
main_frame
(เอกสารที่โหลดสำหรับเฟรมระดับบนสุด),sub_frame
(a เอกสารที่โหลดสำหรับเฟรมแบบฝัง) และ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 รายการพยายามแก้ไขคำขอ ระบบจะ
ส่วนขยายที่ติดตั้งล่าสุดจะชนะ และระบบจะไม่สนใจส่วนขยายอื่นๆ ทั้งหมด ส่วนขยายจะไม่ได้รับการแจ้งเตือนหาก
คำแนะนำในการแก้ไขหรือการเปลี่ยนเส้นทางได้ถูกละเว้น
การแคช
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-samples
ที่เก็บได้
ประเภท
BlockingResponse
แสดงผลค่าสำหรับตัวแฮนเดิลเหตุการณ์ที่มี "การบล็อก" ใช้ExtraInfoSpec อนุญาตให้ตัวแฮนเดิลเหตุการณ์แก้ไขคำขอเครือข่าย
พร็อพเพอร์ตี้
-
authCredentials
ออบเจ็กต์ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onAuthrequired เท่านั้น หากตั้งค่าไว้ คำขอจะสร้างขึ้นโดยใช้ข้อมูลเข้าสู่ระบบที่มีให้
-
รหัสผ่าน
สตริง
-
ชื่อผู้ใช้
สตริง
-
-
ยกเลิก
บูลีน ไม่บังคับ
หากเป็นจริง คำขอจะถูกยกเลิก วิธีนี้จะป้องกันไม่ให้มีการส่งคำขอ สามารถใช้เป็นการตอบกลับเหตุการณ์ onbeforeRequest, onAfterSendHeaders, onHeadersReceived และ onAuthrequired ได้
-
redirectUrl
string ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onAfterRequest และ onHeadersReceived เท่านั้น หากตั้งค่าไว้ ระบบจะป้องกันไม่ให้ส่ง/ดำเนินการตามคำขอเดิม แต่จะเปลี่ยนเส้นทางไปยัง URL ที่ระบุแทน อนุญาตให้มีการเปลี่ยนเส้นทางไปยังรูปแบบที่ไม่ใช่ HTTP เช่น
data:
การเปลี่ยนเส้นทางที่เกิดจากการดำเนินการเปลี่ยนเส้นทางจะใช้เมธอดคำขอเดิมสำหรับการเปลี่ยนเส้นทาง โดยมีข้อยกเว้นหนึ่งข้อคือ หากการเปลี่ยนเส้นทางเริ่มขึ้นที่ขั้นตอน onHeadersReceived การเปลี่ยนเส้นทางจะใช้เมธอด GET ไม่สนใจการเปลี่ยนเส้นทางจาก URL ที่มีรูปแบบws://
และwss://
-
requestHeaders
HttpHeaders ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onAfterSendHeaders เท่านั้น หากตั้งค่าไว้ ระบบจะสร้างคำขอด้วยส่วนหัวของคำขอเหล่านี้แทน
-
responseHeaders
HttpHeaders ไม่บังคับ
ใช้เป็นการตอบกลับเหตุการณ์ onHeadersReceived เท่านั้น หากตั้งค่าไว้ จะถือว่าเซิร์ฟเวอร์ตอบสนองด้วยส่วนหัวการตอบกลับเหล่านี้แทน แสดงผล
responseHeaders
เฉพาะเมื่อคุณต้องการแก้ไขส่วนหัวจริงๆ เพื่อจำกัดจำนวนความขัดแย้ง (ส่วนขยายเพียงรายการเดียวเท่านั้นที่แก้ไขresponseHeaders
สำหรับคำขอแต่ละรายการได้)
FormDataItem
มีข้อมูลที่ส่งผ่านภายในข้อมูลแบบฟอร์ม สำหรับรูปแบบที่เข้ารหัส URL นี้จะจัดเก็บเป็นสตริงหากข้อมูลเป็นสตริง utf-8 และเป็น ArrayBuffer ส่วนข้อมูลแบบฟอร์มคือ ArrayBuffer หาก form-data แสดงถึงการอัปโหลดไฟล์ จะเป็นสตริงที่มีชื่อไฟล์ หากมีการระบุชื่อไฟล์ไว้
ค่าแจกแจง
อาร์เรย์บัฟเฟอร์
สตริง
HttpHeaders
อาร์เรย์ของส่วนหัว HTTP ส่วนหัวแต่ละรายการจะแสดงเป็นพจนานุกรมที่มีคีย์ name
และ value
หรือ binaryValue
ประเภท
object[]
พร็อพเพอร์ตี้
-
binaryValue
number[] ไม่บังคับ
ค่าของส่วนหัว HTTP หากไม่สามารถแสดงด้วย UTF-8 ซึ่งจัดเก็บเป็นค่าไบต์แต่ละค่า (0..255)
-
ชื่อ
สตริง
ชื่อของส่วนหัว HTTP
-
value
string ไม่บังคับ
ค่าของส่วนหัว HTTP หากแสดงด้วย UTF-8 ได้
IgnoredActionType
ค่าแจกแจง
"เปลี่ยนเส้นทาง"
"request_headers"
"response_headers"
"auth_credentials"
OnAuthRequiredOptions
ค่าแจกแจง
"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์
"blocking"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชัน Callback จะกลับมา
"asyncBlocking"
ระบุว่ามีการจัดการฟังก์ชัน Callback แบบไม่พร้อมกัน
"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
สตริง[]
รายการ 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
เป็นการเรียกใช้ฟังก์ชันราคาแพงที่ไม่ควรเรียกใช้บ่อย
ค่า
24
เมธอด
handlerBehaviorChanged()
chrome.webRequest.handlerBehaviorChanged(
callback?: function,
)
ต้องมีการเรียกใช้เมื่อลักษณะการทำงานของเครื่องจัดการ WebRequest เปลี่ยนไปเพื่อป้องกันการจัดการที่ไม่ถูกต้องเนื่องจากการแคช การเรียกใช้ฟังก์ชันนี้มีราคาแพง อย่าโทรบ่อย
พารามิเตอร์
-
Callback
ไม่บังคับ
พารามิเตอร์
callback
มีลักษณะดังนี้() => void
การคืนสินค้า
-
คำมั่นสัญญา<โมฆะ>
Chrome 116 ขึ้นไปรองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback
กิจกรรม
onActionIgnored
chrome.webRequest.onActionIgnored.addListener(
callback: function,
)
เริ่มทำงานเมื่อมีการละเว้นการแก้ไขส่วนขยายที่เสนอสำหรับคำขอเครือข่าย กรณีนี้จะเกิดขึ้นในกรณีที่มีความขัดแย้งกับส่วนขยายอื่นๆ
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
การดำเนินการ
การดำเนินการที่เสนอที่ถูกละเว้น
-
requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์หนึ่งๆ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นเพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
-
onAuthRequired
chrome.webRequest.onAuthRequired.addListener(
callback: function,
filter: RequestFilter,
extraInfoSpec?: OnAuthRequiredOptions[],
)
เริ่มทำงานเมื่อได้รับการตรวจสอบสิทธิ์ที่ไม่สำเร็จ Listener มีตัวเลือก 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 ขึ้นไป
ประเภทของเฟรมที่มีการส่งคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
isProxy
boolean
True สำหรับ Proxy-Authenticate, false สำหรับ WWW-Authenticate
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ทั้งนี้จะไม่มีการตั้งค่านี้หากไม่มีการตั้งค่าระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสเฟรมที่รวมเฟรมที่ส่งคำขอ หากไม่มีเฟรมหลัก ให้ตั้งค่าเป็น -1
-
ขอบเขต
string ไม่บังคับ
ขอบเขตการตรวจสอบสิทธิ์ที่เซิร์ฟเวอร์กำหนด หากมี
-
requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์หนึ่งๆ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นเพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
responseHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวการตอบกลับ HTTP ที่ได้รับพร้อมกับการตอบกลับนี้
-
สคีม
สตริง
รูปแบบการตรวจสอบสิทธิ์ เช่น พื้นฐานหรือไดเจสต์
-
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 | ไม่ได้กำหนด
หากเป็น "การบล็อก" ระบุไว้ใน "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
boolean
ระบุว่าการตอบสนองนี้มีการดึงข้อมูลจากดิสก์แคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่เป็นต้นทางการส่งคำขอจริงๆ โปรดทราบว่าที่อยู่นี้อาจเป็นที่อยู่ IPv6 แบบลิเทอรัล
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
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
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycle
extensionTypes.DocumentLifecycle optional
Chrome 106 ขึ้นไปอายุการใช้งานของเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งบอกว่าคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกจะระบุรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameType
extensionTypes.FrameType optional
Chrome 106 ขึ้นไปประเภทของเฟรมที่มีการส่งคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ทั้งนี้จะไม่มีการตั้งค่านี้หากไม่มีการตั้งค่าระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสเฟรมที่รวมเฟรมที่ส่งคำขอ หากไม่มีเฟรมหลัก ให้ตั้งค่าเป็น -1
-
requestBody
ออบเจ็กต์ไม่บังคับ
มีข้อมูลเนื้อหาของคำขอ HTTP ระบุไว้ก็ต่อเมื่อExtraInfoSpec มี "requestBody" เท่านั้น
-
ข้อผิดพลาด
string ไม่บังคับ
ข้อผิดพลาดเมื่อเรียกดูข้อมูลเนื้อหาของคำขอ
-
formData
ออบเจ็กต์ไม่บังคับ
หากวิธีคำขอเป็น POST และเนื้อหาคือลำดับของคู่คีย์-ค่าที่เข้ารหัสเป็น UTF8 ซึ่งเข้ารหัสเป็น multipart/form-data หรือ application/x-www-form-urlencrypted พจนานุกรมนี้จะปรากฏ และสำหรับแต่ละคีย์จะมีรายการค่าทั้งหมดสำหรับคีย์นั้น หากข้อมูลเป็นสื่อประเภทอื่นหรือมีรูปแบบไม่ถูกต้อง แสดงว่าไม่มีพจนานุกรมอยู่ ค่าตัวอย่างของพจนานุกรมนี้คือ {'key': ['value1', 'value2']}
-
RAW
UploadData[] ไม่บังคับ
หากวิธีคำขอคือ PUT หรือ POST และไม่มีการแยกวิเคราะห์เนื้อหาใน formData อยู่แล้ว องค์ประกอบเนื้อหาคำขอที่ไม่ได้แยกวิเคราะห์จะอยู่ในอาร์เรย์นี้
-
-
requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์หนึ่งๆ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นเพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่เกิดการทริกเกอร์สัญญาณนี้ หน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
URL
สตริง
-
-
returns
BlockingResponse | ไม่ได้กำหนด
หากเป็น "การบล็อก" ระบุไว้ใน "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 ขึ้นไป
ประเภทของเฟรมที่มีการส่งคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ทั้งนี้จะไม่มีการตั้งค่านี้หากไม่มีการตั้งค่าระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสเฟรมที่รวมเฟรมที่ส่งคำขอ หากไม่มีเฟรมหลัก ให้ตั้งค่าเป็น -1
-
requestHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวของคำขอ HTTP ที่จะส่งไปพร้อมกับคำขอนี้
-
requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์หนึ่งๆ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นเพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่เกิดการทริกเกอร์สัญญาณนี้ หน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
URL
สตริง
-
-
returns
BlockingResponse | ไม่ได้กำหนด
หากเป็น "การบล็อก" ระบุไว้ใน "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
boolean
ระบุว่าการตอบสนองนี้มีการดึงข้อมูลจากดิสก์แคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่เป็นต้นทางการส่งคำขอจริงๆ โปรดทราบว่าที่อยู่นี้อาจเป็นที่อยู่ IPv6 แบบลิเทอรัล
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
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
boolean
ระบุว่าการตอบสนองนี้มีการดึงข้อมูลจากดิสก์แคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่เป็นต้นทางการส่งคำขอจริงๆ โปรดทราบว่าที่อยู่นี้อาจเป็นที่อยู่ IPv6 แบบลิเทอรัล
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
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 ขึ้นไป
ประเภทของเฟรมที่มีการส่งคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
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 | ไม่ได้กำหนด
หากเป็น "การบล็อก" ระบุไว้ใน "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
boolean
ระบุว่าการตอบสนองนี้มีการดึงข้อมูลจากดิสก์แคชหรือไม่
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
ip
string ไม่บังคับ
ที่อยู่ IP ของเซิร์ฟเวอร์ที่เป็นต้นทางการส่งคำขอจริงๆ โปรดทราบว่าที่อยู่นี้อาจเป็นที่อยู่ IPv6 แบบลิเทอรัล
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
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[],
)
เริ่มทำงานก่อนที่จะมีการส่งคำขอไปยังเซิร์ฟเวอร์ (การแก้ไขของ Callback onAfterSendHeaders ก่อนหน้าจะปรากฏเมื่อ onSendHeaders เริ่มทำงาน)
พารามิเตอร์
-
Callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(details: object) => void
-
รายละเอียด
ออบเจ็กต์
-
documentId
สตริง
Chrome 106 ขึ้นไปUUID ของเอกสารที่ส่งคำขอ
-
documentLifecycleChrome 106 ขึ้นไป
อายุการใช้งานของเอกสาร
-
frameId
ตัวเลข
ค่า 0 บ่งบอกว่าคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกจะระบุรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) (
type
คือmain_frame
หรือsub_frame
)frameId
จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ -
frameTypeChrome 106 ขึ้นไป
ประเภทของเฟรมที่มีการส่งคำขอ
-
ผู้เริ่ม
string ไม่บังคับ
Chrome 63 ขึ้นไปต้นทางที่เริ่มต้นคำขอ โดยจะไม่เปลี่ยนแปลงผ่านการเปลี่ยนเส้นทาง หากเป็นต้นทางที่ไม่ชัดเจน สตริง "Null" จะถูกนำมาใช้
-
method
สตริง
เมธอด HTTP มาตรฐาน
-
parentDocumentId
string ไม่บังคับ
Chrome 106 ขึ้นไปUUID ของเอกสารระดับบนสุดที่เป็นเจ้าของเฟรมนี้ ทั้งนี้จะไม่มีการตั้งค่านี้หากไม่มีการตั้งค่าระดับบนสุด
-
parentFrameId
ตัวเลข
รหัสเฟรมที่รวมเฟรมที่ส่งคำขอ หากไม่มีเฟรมหลัก ให้ตั้งค่าเป็น -1
-
requestHeaders
HttpHeaders ไม่บังคับ
ส่วนหัวของคำขอ HTTP ที่ส่งไปพร้อมกับคำขอนี้
-
requestId
สตริง
รหัสของคำขอ รหัสคำขอจะไม่ซ้ำกันภายในเซสชันของเบราว์เซอร์หนึ่งๆ ด้วยเหตุนี้ จึงอาจมีการใช้เหตุการณ์เหล่านั้นเพื่อเชื่อมโยงเหตุการณ์ต่างๆ ของคำขอเดียวกัน
-
tabId
ตัวเลข
รหัสของแท็บที่มีคำขอ ตั้งค่าเป็น -1 หากคำขอไม่เกี่ยวข้องกับแท็บ
-
timeStamp
ตัวเลข
เวลาที่เกิดการทริกเกอร์สัญญาณนี้ หน่วยเป็นมิลลิวินาทีนับตั้งแต่ Epoch
-
ประเภท
วิธีใช้ทรัพยากรที่ขอ
-
URL
สตริง
-
-
-
ตัวกรอง
-
extraInfoSpec
OnSendHeadersOptions[] ไม่บังคับ