chrome.webRequest

คำอธิบาย

ใช้ chrome.webRequest API เพื่อติดตามและวิเคราะห์การเข้าชม ตลอดจนสกัดกั้น บล็อก หรือแก้ไขคำขอที่กำลังดำเนินการ

สิทธิ์

webRequest

คุณต้องประกาศสิทธิ์ "webRequest" ในไฟล์ Manifest ของส่วนขยายเพื่อใช้ API คำขอเว็บ รวมถึงสิทธิ์โฮสต์ที่จำเป็น หากต้องการสกัดกั้นคำขอทรัพยากรย่อย ส่วนขยายดังกล่าวต้องมีสิทธิ์เข้าถึงทั้ง URL ที่ขอและผู้เริ่มต้น เช่น

{
  "name": "My extension",
  ...
  "permissions": [
    "webRequest"
  ],
  "host_permissions": [
    "*://*.google.com/*"
  ],
  ...
}

webRequestBlocking

ต้องลงทะเบียนเครื่องจัดการเหตุการณ์การบล็อก ตั้งแต่ไฟล์ Manifest V3 สิ่งนี้จะพร้อมใช้งาน สำหรับส่วนขยายที่ติดตั้งโดยนโยบายเท่านั้น

webRequestAuthProvider

ต้องใช้เมธอด onAuthRequired โปรดดูการจัดการการตรวจสอบสิทธิ์

แนวคิดและการใช้งาน

วงจรของคำขอ

API คำขอเว็บจะกำหนดชุดเหตุการณ์ที่เป็นไปตามวงจรของคำขอเว็บ คุณสามารถใช้เหตุการณ์เหล่านี้เพื่อสังเกตและวิเคราะห์การเข้าชม เหตุการณ์ซิงโครนัสบางเหตุการณ์จะช่วยให้คุณสกัดกั้น บล็อก หรือแก้ไขคำขอได้

ดูวงจรชีวิตของเหตุการณ์สำหรับคำขอที่สำเร็จได้ที่นี่ ตามด้วยคําจํากัดความของเหตุการณ์

วงจรของคำขอเว็บจากมุมมองของ Webrequest 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

Chrome 66 ขึ้นไป

มีข้อมูลที่ส่งภายในข้อมูลแบบฟอร์ม สำหรับรูปแบบ 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

Chrome เวอร์ชัน 70 ขึ้นไป

ค่าแจกแจง

"request_headers"

"response_headers"

"auth_credentials"

OnAuthRequiredOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์

"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล

"asyncBlock"
ระบุว่าฟังก์ชันการติดต่อกลับมีการจัดการแบบไม่พร้อมกัน

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnBeforeRedirectOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnBeforeRequestOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล

"requestBody"
ระบุว่าควรรวมเนื้อหาของคำขอไว้ในเหตุการณ์

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnBeforeSendHeadersOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"requestHeaders"
ระบุว่าควรรวมส่วนหัวของคำขอไว้ในเหตุการณ์

"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnCompletedOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnErrorOccurredOptions

Chrome เวอร์ชัน 79 ขึ้นไป

ค่า

"extraHeaders"

OnHeadersReceivedOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"block"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชันเรียกกลับจะแสดงผล

"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnResponseStartedOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"responseHeaders"
ระบุว่าควรรวมส่วนหัวการตอบกลับไว้ในเหตุการณ์

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

OnSendHeadersOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"requestHeaders"
ระบุว่าควรรวมส่วนหัวของคำขอไว้ในเหตุการณ์

"extraHeaders"
ระบุว่าส่วนหัวอาจละเมิดการแชร์ทรัพยากรข้ามโดเมน (CORS)

RequestFilter

ออบเจ็กต์ที่อธิบายตัวกรองที่จะใช้กับเหตุการณ์ webRequest

พร็อพเพอร์ตี้

  • tabId

    ตัวเลข ไม่บังคับ

  • ประเภท

    ResourceType[] ไม่บังคับ

    รายการประเภทคำขอ คำขอที่ไม่ตรงกับประเภทใดๆ จะถูกกรองออก

  • urls

    สตริง[]

    รายการ URL หรือรูปแบบ URL คำขอที่ไม่ตรงกับ URL ใดเลยจะถูกกรองออก

  • windowId

    ตัวเลข ไม่บังคับ

ResourceType

Chrome 44 ขึ้นไป

ค่าแจกแจง

"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 เวอร์ชัน 70 ขึ้นไป
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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ ค่านี้จะไม่แสดงหากคำขอเป็นการนำทางของเฟรม

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • error

        string

        คำอธิบายข้อผิดพลาด เราไม่รับประกันว่าสตริงนี้จะยังคงใช้งานร่วมกันได้แบบย้อนหลังระหว่างรุ่น คุณต้องไม่แยกวิเคราะห์และดำเนินการตามเนื้อหา

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        วงจรการใช้งานเอกสาร

      • frameId

        ตัวเลข

        ค่า 0 บ่งชี้ว่ามีคำขอเกิดขึ้นในเฟรมหลัก ค่าบวกแสดงถึงรหัสของเฟรมย่อยที่มีคำขอเกิดขึ้น หากโหลดเอกสารของเฟรม (ย่อย) ไว้ (type คือ main_frame หรือ sub_frame) frameId จะระบุรหัสของเฟรมนี้ ไม่ใช่รหัสของเฟรมด้านนอก รหัสเฟรมจะไม่ซ้ำกันภายในแท็บหนึ่งๆ

      • Chrome 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[] ไม่บังคับ