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

在Delphi 11.2的WebView2中设置Authorization请求头失败求助

问题:WebView2中无法设置Authorization请求头

环境信息

  • Delphi版本:11.2(版本号28.0.46141.0937)
  • Microsoft Edge WebView2 Runtime版本:125.0.2535.92
  • WebView2Loader.dll版本:1.0.2478.35

需求

为WebView2发起的请求设置两个请求头:

  • User-Agent(已成功设置)
  • Authorization(设置失败)

问题现象

尝试通过两种方式设置Authorization请求头均未成功:

  1. BrowserWebResourceRequested事件完全未触发,断点无法命中
  2. BrowserNavigationStarting事件中设置头后无效果,抓包显示请求未携带Authorization头

相关代码

BrowserCreateWebViewCompleted 事件处理

procedure TURLAnzeigenF.BrowserCreateWebViewCompleted(Sender: TCustomEdgeBrowser; AResult: HRESULT);
var
  debug: HRESULT;
  settings2: ICoreWebView2Settings2;
  useragent: string;
begin
  inherited;    
  OleCheck(Sender.SettingsInterface.QueryInterface(IID_ICoreWebView2Settings2, settings2));
  if Assigned(settings2) then begin
    useragent := 'Custom ' + GetMyVersion;
    OleCheck(settings2.Set_UserAgent(PChar(useragent)));
  end;
  debug := Sender.DefaultInterface.AddWebResourceRequestedFilter('*', COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
  OleCheck(debug);
  Blubb;
end;

BrowserWebResourceRequested 事件处理

procedure TURLAnzeigenF.BrowserWebResourceRequested(Sender: TCustomEdgeBrowser; Args: TWebResourceRequestedEventArgs);
var
  temprequest: TWebResourceRequestedEventArgs;
  request: ICoreWebView2WebResourceRequest;
  headers: ICoreWebView2HttpRequestHeaders;
  token: string;
begin
  if (optionaltoken <> '') then begin
    temprequest := TWebResourceRequestedEventArgs(Args.ArgsInterface);
    try      
      token :=  'Bearer ' + optionaltoken;
      //OleCheck(Args.ArgsInterface.Get_Request(request));
      OleCheck(temprequest.ArgsInterface.Get_Request(request));
      OleCheck(request.Get_Headers(headers));
      OleCheck(headers.SetHeader('Authorization', PChar(token)));
    finally
      temprequest.Free;
    end;
  end;
end;

BrowserNavigationStarting 事件处理

procedure TURLAnzeigenF.BrowserNavigationStarting(Sender: TCustomEdgeBrowser; Args: TNavigationStartingEventArgs);
var
  token: string;
  headers: ICoreWebView2HttpRequestHeaders;
begin
  inherited;
  if (optionaltoken <> '') then begin
    token :=  'Bearer ' + optionaltoken;
    Args.ArgsInterface.Get_RequestHeaders(headers);
    OleCheck(headers.SetHeader('Authorization', PChar(token)))
  end;
end;

DFM配置片段

object Browser: TEdgeBrowser [2]
  Left = 0
  Top = 93
  Width = 630
  Height = 353
  Align = alClient
  TabOrder = 2
  UserDataFolder = '%LOCALAPPDATA%\bds.exe.WebView2'
  OnCreateWebViewCompleted = BrowserCreateWebViewCompleted
  OnNavigationStarting = BrowserNavigationStarting
  OnWebResourceRequested = BrowserWebResourceRequested
end

抓包情况

抓包显示请求中未包含Authorization头。

请问是否存在我未发现的明显错误?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:16:04