我们网站检测是否客户端访问是检测请求头的 app-name 字段是否有值(有个中间件,全部请求都检测)
Electron 非常简单,三行代码搞定
session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => {
details.requestHeaders['app-name'] ='myapp'
details.requestHeaders['app-ver'] = '1.0-win'
details.requestHeaders['app-iver'] = '20240202-01M'
callback({ requestHeaders: details.requestHeaders })
})
tauri 这个问题 Google 能搜到 4 篇讨论贴,实际给出方案的只有这一篇 https://github.com/tauri-apps/tauri/discussions/4912
有人在下面提问说编译不了,快半年了没人回复
我看 Rust 和 tauri 文档折腾了一天还没搞定,放弃了,用 Electron 3 分钟打好包提交 (最后还被领导骂了这么简单一个需求弄了一天是不是又在上班时间打游戏)
附上我改的最后一版,还是不行,有能力的 V 友看看要写多少行才能实现这个简单的功能
fn main() {
tauri::Builder::default()
.setup(|app| {
let main_window = app.get_window("main").unwrap();
main_window.with_webview(|webview| unsafe {
let core = webview.controller().CoreWebView2().unwrap();
let mut token: EventRegistrationToken = EventRegistrationToken::default();
core.AddWebResourceRequestedFilter("*", COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL);
core.add_WebResourceRequested(
CoreWebView2WebResourceRequestedEventHandler::create(Box::new(move |sender, args| {
if let Some(args) = args {
let request: ICoreWebView2WebResourceRequest = args.Request().unwrap();
request
.Headers()
.unwrap()
.SetHeader("app-name", "myapp")
.SetHeader("app-ver", "1.0-win")
.SetHeader("app-iver", "20240202-01W")
.unwrap();
}
Ok(())
})),
&mut token,
);
});
Ok(())
})
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}