首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# WinForm WebKit.NET 登錄頁面無法跳轉的解決

     編輯:程式設計疑難解答

現象

使用 WebKitBrowser 訪問 passport.baidu.com 登錄,提交後頁面不跳轉、顯示「登錄超時」。

原因分析

  • WebKit.NET 基於舊版 WebKit 引擎,對現代 JS/CSS/安全策略(SameSite Cookie、CSP、重定向鏈)支持不全。
  • 百度登錄流程涉及多次重定向、JS 加密、跨域 Cookie,舊引擎易失敗。

解決方案

  1. 遷移至 CefSharp / WebView2(推薦):
    • CefSharp.WinForms:基於 Chromium,渲染引擎新、兼容性強。
    • Microsoft.Web.WebView2:系統級 Edge (Chromium) 控件,體積小、自動更新。
  2. 若必須用 WebKit.NET:嘗試設置 UserAgent 模擬 Chrome、啟用 Cookie 管理、檢查 HTTPS 證書回調,但成功率低。

遷移示例

// CefSharp
var browser = new ChromiumWebBrowser("https://passport.baidu.com");
this.Controls.Add(browser);
browser.Dock = DockStyle.Fill;

// WebView2
await webView2.EnsureCoreWebView2Async();
webView2.CoreWebView2.Navigate("https://passport.baidu.com");
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved