在本站中
本站是开源的 dioxus 全栈应用(yuxuetr/rustineverything,链接指向提交 89a61b1),没有用 tauri,也没有桌面版。前几卷的「在本站中」都是读本站已经在用的代码;这一部分换个问法:如果要把本站包成一个 tauri 桌面应用,前面九部分讲的机制会在哪里起作用、在哪里挡路。实验是一个隐藏窗口的 tauri 应用,对着本地 dx serve 起的站点跑,只发 GET 和只读的 server function,不改站点。
- 把本站装进 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 判断来源、检查远程页面的机制在 运行时检查。
💬 关联讨论
发起讨论加载中...