在Delphi 11.2的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请求头均未成功:
BrowserWebResourceRequested事件完全未触发,断点无法命中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
相关产品推荐
相关产品推荐

