You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用chrome.webRequest API将POST请求修改为GET请求?

How to Convert POST Requests to GET with chrome.webRequest API

Ah, I’ve been in this exact spot—just modifying the details.method property directly won’t work because that object is just a snapshot of the request, not the actual request Chrome is about to send. To make this change stick, you need to return a request modification object from your listener that tells Chrome to redirect the request as a GET, with the POST data converted to query parameters.

Here’s how to fix your code:

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    // Only process POST requests
    if (details.method !== 'POST') return;

    // Extract form data from the request body (for application/x-www-form-urlencoded)
    const formData = details.requestBody?.formData;
    if (!formData) return; // Exit if no body to convert

    // Convert form data to a query string
    const queryParams = new URLSearchParams();
    for (const [key, values] of Object.entries(formData)) {
      values.forEach(value => queryParams.append(key, value));
    }

    // Build the new GET URL with query parameters
    const url = new URL(details.url);
    url.search = queryParams.toString();

    // Return the modification to switch to GET and redirect
    return {
      redirectUrl: url.toString(),
      method: 'GET'
    };
  },
  {urls: ['http://localhost/*']},
  ["requestBody", "blocking"] // Don't forget "blocking"!
);

Key Notes:

  • Add "blocking" to extraInfoSpec: This is critical—without it, Chrome won’t wait for your listener to return a modification, so your changes won’t take effect. You already included "requestBody", just add "blocking" to the array.
  • Handle Request Body: Since GET requests don’t support a body, you need to convert the POST body data into query parameters. The example above handles application/x-www-form-urlencoded data (the most common form type). If you’re dealing with JSON bodies, you’d need to parse details.requestBody.raw[0].bytes into a JSON object first, then convert that to query params.
  • Server Compatibility: Keep in mind that the target server must accept GET requests with those query parameters. Some APIs only support POST for certain endpoints, so this depends on the service you’re interacting with.

If you need to handle JSON bodies, here’s a quick snippet to parse them:

// For JSON request bodies
const rawBody = details.requestBody?.raw?.[0];
if (rawBody && rawBody.mimeType === 'application/json') {
  const jsonString = new TextDecoder().decode(rawBody.bytes);
  const jsonData = JSON.parse(jsonString);
  // Convert jsonData to query params using similar logic as form data
}

内容的提问来源于stack exchange,提问作者Karthik Balasubramanian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:52:04