Pages actions reject capacitor:// URLs in the iOS WebView
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 新手友好度
- 68/100
- Issue 類型
- 缺陷
- 描述清晰度
- 描述清楚
- 活躍度
- 活躍
- 技術堆疊
- typescript
- 領域
- frontend
研究方向
Start by locating the Pages navigation engine and its URL scheme guard, then read the same-app URL comparison and related tests. Add coverage for capacitor://localhost navigation and for a different Capacitor host; verify HTTP(S) behavior is unchanged and other schemes remain rejected.
由索引模型根據 Issue 內容生成。
描述
Problem
Void Pages rejects capacitor:// URLs, which Capacitor uses by default for local pages in its iOS WKWebView. Initial rendering and hydration work, but submitting a Pages action fails with:
Void Router: refusing to navigate to a capacitor: URL.
Observed with Void / @void/react 1.1.11 on an iOS 26.1 simulator. The same protocol guard is present on main (9ed64ba).
Reproduction
- Serve a Void React Pages application in a Capacitor iOS WebView at
capacitor://localhost, with page requests forwarded to its Worker. - Hydrate the page and submit a Pages form action, or invoke
router.visit('/users', { method: 'POST' }). - The navigation engine rejects the URL before sending the page request.
Expected: same-app Pages GET/POST navigation works under the default capacitor:// scheme.
Changing server.iosScheme to HTTP(S) is not a workaround: WKWebView already handles those schemes and Capacitor cannot register them. See Capacitor's configuration reference.
Proposed scope
Allow capacitor: alongside HTTP(S) in the Pages navigation engine. It also needs a small same-app URL comparison adjustment: new URL('capacitor://localhost/users').origin is "null", so comparing that value directly with WKWebView's window.location.origin does not identify the local app. Compare protocol and host for capacitor: only, preserving HTTP(S) behavior and rejecting other schemes.
No Capacitor dependency or configurable scheme registry is needed. Different Capacitor hosts must not be treated as the same origin.
- 主要語言
- TypeScript
- 星號
- 402
- 分支
- 32
- 平均合併
- 12 小時 28 分鐘
- 30 天內合併 PR
- 77
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
voidzero-dev/void 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 82/100
voidzero-dev/void#478 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 78/100
voidzero-dev/void#463 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 82/100
voidzero-dev/void#459 ·
維護者通常 1 天內回覆
-
bug
難度 1/5 1-3 小時 新手友好度 78/100
voidzero-dev/void#428 ·
維護者通常 1 天內回覆
-
難度 4/5 3-5 天 新手友好度 56/100
voidzero-dev/void#477 ·
維護者通常 1 天內回覆
查看 voidzero-dev/void 的全部 Issue
相似的 Issue
-
freshness freshness:observed-only
難度 2/5 1-3 小時 新手友好度 68/100
thoroc/context-radar#280 ·
-
難度 2/5 1-3 小時 新手友好度 66/100
-
documentation story
難度 2/5 1-3 小時 新手友好度 75/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 74/100
維護者通常 1 天內回覆
-
bug category:billing priority:p3 track:fast
難度 2/5 1-3 小時 新手友好度 72/100
LanternOps/breeze#9223 ·
維護者通常 1 天內回覆