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

在C++中如何为TEdgeBrowser传递JWT认证令牌?

在C++应用中为TEdgeBrowser传递JWT身份认证请求头

方法1:导航单个页面时直接传递请求头

如果只需要在打开特定页面时附加JWT令牌,可以利用TEdgeBrowser::Navigate方法的ExtraHeaders参数,直接在请求头中加入Authorization字段:

void __fastcall TForm1::btnNavigateClick(TObject *Sender)
{
    // 替换为你生成的JWT令牌
    const String JWTToken = L"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
    // 构造自定义请求头,注意格式为每行一个头字段,用\r\n分隔
    const String extraHeaders = L"Authorization: Bearer " + JWTToken + L"\r\n";

    // 确保EdgeBrowser已完成CoreWebView2初始化
    if (EdgeBrowser1->CoreWebView2 != nullptr)
    {
        EdgeBrowser1->Navigate(L"https://your-target-webapp.com", extraHeaders);
    }
}

方法2:全局拦截所有请求添加JWT头

如果需要页面内所有请求(包括AJAX、资源加载请求)都自动带上JWT令牌,可以通过监听CoreWebView2的WebResourceRequested事件,拦截并修改请求头:

  1. 在Form头文件中声明事件处理函数:
private:
    void __fastcall OnWebResourceRequested(TObject *Sender, TCefWebResourceRequestedEventArgs *Args);
  1. 订阅事件(需在CoreWebView2初始化完成后):
void __fastcall TForm1::EdgeBrowser1CreateWebView2Completed(TObject *Sender, TAsyncCompletedEventArgs *Args)
{
    if (Args->Success && EdgeBrowser1->CoreWebView2 != nullptr)
    {
        // 设置过滤规则,拦截所有HTTP/HTTPS请求
        EdgeBrowser1->CoreWebView2->AddWebResourceRequestedFilter(L"*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
        // 绑定请求拦截事件
        EdgeBrowser1->CoreWebView2->OnWebResourceRequested = &OnWebResourceRequested;
    }
}
  1. 实现请求头修改逻辑:
void __fastcall TForm1::OnWebResourceRequested(TObject *Sender, TCefWebResourceRequestedEventArgs *Args)
{
    const String JWTToken = L"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."; // 替换为你的JWT令牌
    auto requestHeaders = Args->Request->Headers;

    // 添加或覆盖Authorization头
    requestHeaders->SetHeader(L"Authorization", L"Bearer " + JWTToken);
    // 更新请求头
    Args->Request->Headers = requestHeaders;
}

关键注意事项

  • 必须等待CoreWebView2初始化:所有操作CoreWebView2的代码都要放在OnCreateWebView2Completed事件触发后,或者先检查EdgeBrowser->CoreWebView2 != nullptr,否则会触发空指针异常。
  • 请求头格式规范:ExtraHeaders参数需要用\r\n分隔多个头字段,且不要重复设置浏览器自动管理的头(如Host、User-Agent)。
  • JWT格式正确:Authorization头的格式为Bearer [空格]JWT令牌,注意空格不能省略。
  • CORS兼容:如果目标Web应用开启了CORS,需要确保后端配置允许Authorization请求头,否则会被浏览器拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 16:04:57