Administrator
发布于 2026-01-19 / 3 阅读
0

OGame Vue TS 与 WebDAV 集成时的 CORS 问题解决方案

在 NAS 上跑了个 OGame Vue TS(浏览器版的太空策略游戏),想用 WebDAV 做云存档。WebDAV 服务配好了,Zotero 连上去正常——但 OGame 的浏览器界面一直报「网络错误,可能是 CORS 限制」。

为什么 Zotero 能行、OGame 不行

Zotero 是原生应用,不受浏览器的同源策略限制。OGame Vue TS 完全跑在浏览器里,浏览器严格执行 CORS 策略——从 http://192.168.x.x:游戏端口 发请求到 http://192.168.x.x:WebDAV端口,端口不同就是跨域,浏览器会发 Preflight 请求(OPTIONS),如果 WebDAV 服务没正确响应就拒绝。

修法

我用的是 hacdias/webdav 镜像。它的 CORS 配置通过环境变量控制。关键是 allowed_hosts 必须包含浏览器访问 OGame 的完整地址,不是 WebDAV 自己的地址。

我踩的坑就是这里——把 WebDAV 的地址写进去了,应该是 OGame 的地址。

hacdias/webdav 的 CORS 参数:


-cors.enabled=true
-cors.allowed_hosts=http://你的OGame访问地址:端口
-cors.allowed_methods=GET,POST,PUT,DELETE,OPTIONS,PROPFIND,MKCOL,MOVE,COPY

WebDAV 本身也需要 OPTIONS 和 PROPFIND 这些方法,不全加的话 Preflight 过了但实际请求还是会被拦。

改完重启容器,OGame 里重新测试连接——通了。

如果还不行

浏览器 F12 看 Network 面板,找红色的 OPTIONS 请求,看 Response Headers 里有没有 Access-Control-Allow-Origin。没有或者值不对,说明 CORS 配置还没生效。

另外如果你用的是 Nginx/Caddy 反代,CORS 的 Access-Control-Allow-Origin 可以被反代层注入,不一定要在 WebDAV 容器里配——但反代层要注意 OPTIONS 请求的转发,有些默认不处理。