密码正确,为什么浏览器仍然登录失败
当天处理的是 Organice 连接坚果云 WebDAV:服务器请求成功,浏览器却无法登录。部署位于 VPS 的 /opt/stacks/organice/compose.yaml ,镜像为当时的 twohundredok/organice:latest ,前端入口是 Organice,由 /opt/stacks/caddy/Caddyfile 反代。
先把认证与浏览器访问分开验证。携带凭据的 PROPFIND /dav/ 返回 207,说明账户与 WebDAV 服务可用;模拟浏览器的 OPTIONS 预检却返回 401,且没有跨域放行头。因此继续更换密码不能解决问题。浏览器会在实际跨域请求前检查许可,命令行成功不代表浏览器可以读取响应,机制见 MDN 的 CORS 说明。
方案是在同一域名提供 https://organice.envoys9.top/dav/ ,由服务器代理到 WebDAV。这样前端和代理端点同源,跨域限制不再阻断这段调用,认证仍由上游处理。
配置写进去了,前端是否真正读到了
落地时又遇到两个独立问题: .env.sample 为 root 所有且权限 600,容器入口读不到;镜像替换脚本也无法正确处理 URL 中的斜杠。最初检查了错误的静态目录,后来确认实际文件在 /opt/organice/build 。最终在 Compose 启动逻辑中修补 build/*.js ,线上 JS 中未替换的 ORGANICE_WEBDAV_URL 占位符降为零。
旧浏览器缓存还会继续使用旧 endpoint,随后调整缓存响应,并提示重新登录。Homepage 配置 /opt/stacks/homepage/config/services.yaml 的入口改为 直接打开 inbox.org,从 /api/services 回读确认生效。这里分别验证了代理、构建产物和导航配置,避免只看容器运行状态。
以下为对应环境的复查命令;WebDAV 认证通过受保护的客户端配置提供,当天记录未明确独立凭据文件路径。
docker compose -f /opt/stacks/organice/compose.yaml ps
curl -I https://organice.envoys9.top/
主会话续接
以下命令在 archx 上执行;目录仅用于辨认工作上下文。
会话 1:~
codex resume 019f228b-699c-7cd0-a0e4-30c66d1d114d