Rust in Everything
基于 tauri 2.12.5

在本站中

本站是开源的 dioxus 全栈应用(yuxuetr/rustineverything,链接指向提交 89a61b1),没有用 tauri,也没有桌面版。前几卷的「在本站中」都是读本站已经在用的代码;这一部分换个问法:如果要把本站包成一个 tauri 桌面应用,前面九部分讲的机制会在哪里起作用、在哪里挡路。实验是一个隐藏窗口的 tauri 应用,对着本地 dx serve 起的站点跑,只发 GET 和只读的 server function,不改站点。

  1. 把本站装进 tauri:窗口直接打开站点时,水合、cookie、主题照常,站点的 CSP 让 IPC 退回 postMessage,invoke 被 ACL 拒绝;加 remote.urls 按权限放行,把站点写进 frontendDist 则整个源都算本地、拿到全部本地能力,所以不该给本站任何命令。内嵌前端时,dioxus 在 web 上只发相对路径,请求落到 tauri://localhost 拿回 index.html,没有水合数据时客户端起不来;改发绝对地址后,站点本身没有 CORS 层(dx serve 的代理有,开发时会误以为能用),WKWebView 跨站请求不带任何 cookie。最后按源码和 dioxus-desktop 对照:没有 IPC 和 CORS,但 cookie 在 reqwest 的进程级 Jar 里,本站的浏览器操作在桌面上是空操作。
flowchart TB
  site["本站"] --> remote["打开站点 URL"]
  site --> embed["内嵌前端"]
  site --> desk["dioxus-desktop"]
  remote --> authz["卡在授权"]
  embed --> cors["卡在跨源与 cookie"]
  desk --> login["卡在登录流程"]

本站自己怎么起服务、页面怎么取数据,见 dioxus 卷的 在本站中;tauri 判断来源、检查远程页面的机制在 运行时检查。

💬 关联讨论

发起讨论
加载中...