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

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

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

Chrome 66 ขึ้นไป

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

Chrome 70 ขึ้นไป

ค่าแจกแจง

"เปลี่ยนเส้นทาง"

"request_headers"

&quot;response_headers&quot;

&quot;auth_credentials&quot;

OnAuthRequiredOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

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

"blocking"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชัน Callback จะกลับมา

&quot;asyncBlocking&quot;
ระบุว่ามีการจัดการฟังก์ชัน Callback แบบไม่พร้อมกัน

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

OnBeforeRedirectOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

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

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

OnBeforeRequestOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"blocking"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชัน Callback จะกลับมา

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

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

OnBeforeSendHeadersOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

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

"blocking"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชัน Callback จะกลับมา

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

OnCompletedOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

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

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

OnErrorOccurredOptions

Chrome 79 ขึ้นไป

ค่า

"extraHeaders"

OnHeadersReceivedOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

"blocking"
ระบุว่าคำขอถูกบล็อกจนกว่าฟังก์ชัน Callback จะกลับมา

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

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

OnResponseStartedOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

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

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

OnSendHeadersOptions

Chrome 44 ขึ้นไป

ค่าแจกแจง

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

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

RequestFilter

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

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

  • tabId

    หมายเลข ไม่บังคับ

  • ประเภท

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

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

  • URL

    สตริง[]

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

  • windowId

    หมายเลข ไม่บังคับ

ResourceType

Chrome 44 ขึ้นไป

ค่าแจกแจง

"main_frame"
ระบุทรัพยากรเป็นเฟรมหลัก

"sub_frame"
ระบุทรัพยากรเป็นเฟรมย่อย

"stylesheet"
ระบุทรัพยากรเป็นสไตล์ชีต

&quot;script&quot;
ระบุทรัพยากรเป็นสคริปต์

"image"
ระบุทรัพยากรเป็นรูปภาพ

"font"
ระบุทรัพยากรเป็นแบบอักษร

"object"
ระบุทรัพยากรเป็นวัตถุ

&quot;xmlhttprequest&quot;
ระบุทรัพยากรเป็น XMLHttpRequest

"ping"
ระบุทรัพยากรเป็นคำสั่ง ping

&quot;csp_report&quot;
ระบุทรัพยากรเป็นรายงานนโยบายรักษาความปลอดภัยเนื้อหา (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 70 ขึ้นไป
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 ของเอกสารที่ส่งคำขอ

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

      • Chrome 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
        Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • ข้อผิดพลาด

        สตริง

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

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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

      • Chrome 106 ขึ้นไป

        อายุการใช้งานของเอกสาร

      • frameId

        ตัวเลข

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

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