将新标头添加到iframe

add new header to iframe

本文关键字:iframe 添加 新标头      更新时间:2023-12-20

如何为每个传出请求添加一个新的头,只为受信任的请求添加

    chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
    var headers = details.requestHeaders;
    console.log("=========BEFORE==========");
    console.log(headers);
    headers.push({
      name: "CSRF",
      value: "CSRFTOKEN"
    });
    console.log("=========AFTER==========");
    console.log(headers);

    },
    {urls: [ "*://*.example.com/*" ]},['requestHeaders']);

甚至将此标头也添加到iframe

var attr ={"src":"http://example.com/test.php"};
var s = zen.utils.createElement(document,"iframe",attr);
document.body.appendChild(s);

这是一个示例test.php文件,它打印所有的头

<?php
 $header=array_merge(getallheaders(),apache_response_headers());
print_r($header);

阅读文档。重点矿:

如果可选的opt_extraInfoSpec数组包含字符串'blocking'(只允许用于特定事件),则会同步处理回调函数。这意味着在回调函数返回之前,请求将被阻止。

在这种情况下,回调可以返回一个webRequest.BlockingResponse,用于确定请求的下一个生命周期。根据上下文的不同,此响应允许取消或重定向请求(onBeforeRequest)、取消请求或修改标头onBeforeSendHeadersonHeadersReceived)或提供身份验证凭据(onAuthRequired)。

因此,要修改标题,您需要:

  1. 声明您要修改请求;必须阻止请求,直到您做出反应。您需要将"blocking"添加到API调用中。

  2. 您需要特殊权限"webRequestBlocking"才能执行此操作。将其添加到清单中。

  3. 您需要从回调中返回修改后的头。

    chrome.webRequest.onBeforeSendHeaders.addListener(
      function(details){
        var headers = details.requestHeaders;
        /* ..modify headers.. */
        return { requestHeaders : headers };
      },
      { urls: [ "*://*.example.com/*" ] },
      [ 'blocking', 'requestHeaders' ]
    );