Skip to content

飞牛移动 App 容器(WebView iframe) 对应用 cookie/localStorage/JS 支持受限——自带登录应用无法登录 #1

Description

@techysy

飞牛移动 App 容器(WebView iframe)对应用的 Web 存储 / JS 支持受限

现象 / Symptom

飞牛移动 App(iOS/Android 客户端)内打开 9Router(type:"url"type:"iframe" 均复现),存在以下问题:

  1. 登录无法保存:应用有自带登录(dashboard 密码),在飞牛 App 容器内输入正确密码后反复跳回登录页,无法进入。同一应用在电脑浏览器 / 手机浏览器直接访问 http://<NAS>:20128 则登录正常。
  2. 主题设置不持久化:应用基于 localStorage 的主题选择(深色/浅色)在容器内不保存,每次打开恢复默认。
  3. JS 驱动的 UI 状态不生效:例如应用打包里的货币换算补丁(成本显示按语言切换 ¥/$,纯前端 JS 逻辑),在容器内不显示效果,但浏览器访问正常。

根因 / Root Cause

飞牛移动 App 通过 WebView iframe 打开所有应用(无论应用配置是 type:"url" 还是 type:"iframe",移动端客户端一律用 iframe 容器承载)。

  • 登录用 cookie(SameSite=lax,在 跨源 iframe 中浏览器/WebView 拒绝持久化该 cookie → session 无法建立 → 反复跳回登录页。
  • localStorage / JS 驱动的 UI 状态在 WebView 容器内持久化受限。

验证 / Verification

# 1. 应用登录 API 返回的 cookie 属性(SameSite=lax)
curl -s -X POST http://127.0.0.1:20128/api/auth/login \
  -H "Content-Type: application/json" -d '{"password":"..."}' -D - | grep -i set-cookie
# → set-cookie: auth_token=...; Path=/; HttpOnly; SameSite=lax

# 2. 浏览器直接访问(非 iframe) 登录正常;飞牛 App 容器(iframe) 登录失败

影响 / Impact

  • 任何自带登录 + cookie session 的 fnOS 应用,在飞牛移动 App 容器内都无法登录。
  • 依赖 localStorage / 前端 JS 持久化的功能(主题、语言、货币等)在移动容器内体验不完整。

建议 / Suggestion(转飞牛侧)

  1. 移动端容器改用非 iframe 方式打开应用(如新页面 / 系统浏览器),或在容器内允许第三方/跨源 cookie 与 localStorage
  2. 或提供容器内 cookie/localStorage 持久化 的开关。
  3. 或允许应用在容器内以 SameSite=None; Secure 设置 cookie(需配合 HTTPS 访问)。

环境 / Environment

  • fnOS 版本:1.1.31xx
  • 客户端:飞牛移动 App(iOS / Android)
  • 受影响应用:9Router(type:"url"type:"iframe" 均复现)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions