又见 SeaTable 的 CSRF 跨域错误

一、问题出现

昨晚将 SeaTable 从 4.2 版本升级到 4.4 版本,又出现了跨域错误,如图:

1111111

这张图是从论坛拷贝的,我的忘记截图了……

这个问题在升级到2.7的时候出现过,当时莫名奇妙就好了,详见《Seatable 升级 2.7.0 需避开的问题 》,没啥处理经验,论坛上因出现这个问题的原因各异,也没有一个准确的说法。以下配置基本都试了一遍,还是没能解决问题:

# dtable_web_settings.py 配置文件
# 解决CSRF的问题
CSRF_TRUSTED_ORIGINS = ['xxx.xxx.cn:xx','xxx.xxx.cn:xx']
CSRF_ALLOW_ORIGINS = ['xxx.xxx.cn:xx','xxx.xxx.cn:xx']
SESSION_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SECURE = False

二、问题解决

后来偶然间从一个报错里面发现,CSRF_TRUSTED_ORIGINS 配置是需要加协议的:

ERRORS:
?: (4_0.E001) As of Django 4.0, the values in the CSRF_TRUSTED_ORIGINS setting must start with a scheme (usually http:// or https://) but found xxx.xxx.cn:xx. See the release notes for details.
?: (4_0.E001) As of Django 4.0, the values in the CSRF_TRUSTED_ORIGINS setting must start with a scheme (usually http:// or https://) but found xxx.xxx.cn:xx. See the release notes for details.

所以,只需要把配置改成如下,即可解决跨域问题:

# dtable_web_settings.py 配置文件
# 解决CSRF的问题
CSRF_TRUSTED_ORIGINS = ['http://xxx.xxx.cn:xx','https://xxx.xxx.cn:xx']
#CSRF_ALLOW_ORIGINS = ['xxx.xxx.cn:xx','xxx.xxx.cn:xx']
#SESSION_COOKIE_SAMESITE = 'None'
#SESSION_COOKIE_SECURE = False
#CSRF_COOKIE_SAMESITE = 'None'
#CSRF_COOKIE_SECURE = False

可以看到其他配置都是不起作用的,只需要 CSRF_TRUSTED_ORIGINS 配置正确即可。

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息