admin 发表于 2024-3-23 23:49:03

seafile11.X登录时报"CSRF verification failed. Origin checking failed"

docker seafile-ce 11.0.5安装时,web端登录报错。


Forbidden (403)
CSRF verification failed. Request aborted.


Help
Reason given for failure:


Origin checking failed - https://**.com does not match any trusted origins.


日志
2023-11-28 13:47:58,429 django.security.csrf:241 log_response Forbidden (Origin checking failed -
docker中使用了端口映射,将seafile容器的TCP 80映射为TCP 1080,10.0.X及之前版本都没问题。


通过官方论坛终于找到原因及解决办法。

原因分析:
10 版本用的是 django 3.2。11 版本用的是 django 4.2。django 4.2 相对 django 3.2,在 csrf 检查时,新增了对 origin http header 的检查。
可能是因为本人修改了端口映射,导致 django 4.2 中 origin http header 检查不通过。配置了 CSRF_TRUSTED_ORIGINS 就会跳过 csrf 的检查。

解决办法1:
在seahub_settings.py 中添加配置:
CSRF_TRUSTED_ORIGINS = ['https://**.com']    #填你的访问地址


解决办法2:(官方推荐)
因为本人自定义了端口号,所以最优的解决方法是修改一下 nginx 的配置,把 8899 端口加入到 host 中:
# vim /....../seafile/seafile-data/nginx/conf/seafile.nginx.conf
    location / {
      ...
      proxy_set_header Host $host:1080;
      ....


以上方法,亲试有效!




页: [1]
查看完整版本: seafile11.X登录时报"CSRF verification failed. Origin checking failed"