OneXray iOS:重定向截断 deep link 参数导致 panel/mode 丢失

OneXray 维护者在 iOS 26.11.1 开发版本中验证:直接打开完整 `onexray://` 链接时,Remnawave 和 Provider 配置可以预填;示例重定向服务返回 HTTP 301 时却把 Location 截断到只剩 `url` 参数,`panel` 和 `mode` 在应用收到链接前已经丢失。

作者原文

Thanks for the report. We tested the current 26.11.1 development build on iOS: both cold and warm launches correctly prefill Remnawave and Provider configuration when opening this complete direct link:

onexray://onexray.com/sub/add?url=https://example.com/test-link&panel=remnawave&mode=providerManaged#VPN

With the redirect service in your example, we reproduced an HTTP 301 response whose Location is already truncated to:

onexray://onexray.com/sub/add?url=https://example.com/test-link

The panel and mode parameters are therefore lost before OneXray receives the URI. Safari retained the name fragment in our test.

Please either distribute the direct deeplink or update the redirect service:

  1. Encode the entire deeplink as the value of the outer url parameter, for example with URLSearchParams.
  2. On the server, parse that parameter and return the original onexray://... URI in Location. A normal query parser already decodes one outer layer; do not decode it again.
  3. Fix the server handling as well: currently, submitting an encoded value makes it return the percent-encoded text unchanged, rather than a valid onexray:// URI. Encoding the outer parameter alone is not sufficient with the current implementation.

Closing this as an external redirect issue: the reproduced parameter loss occurs before the link reaches OneXray.