tauri 真的太难用了,浪费了我整整一天

2024-02-03 01:20:49 +08:00
 drymonfidelia

天天看 V2 有人吹 tarui ,刚好有客户反应我们客户端太大了,于是给公司打包新网站(启动动画播完 location.href 跳转到线上地址,没别的功能)成 exe 的时候想试一下

我们网站检测是否客户端访问是检测请求头的 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");
}
12893 次点击
所在节点    程序员
63 条回复
ungrownxiaohao
2024-02-19 10:13:23 +08:00
@roycestevie6761 #3 你好,rust 社区是这样的,争着抢着要“改天换地”
uLdP4HCJts79jh56
325 天前
@lisongeee 拦截不能,获取 webview 里的 cookie 也不行,有维护者在 issue 里回复过对 webview 控制力很弱
seu
300 天前
不行 issue 里面有明确的说过 可能会考虑在 v3 版本添加 现在的技术路线图不包含这块

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1013792

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX