如何解决CSRF验证失败?已配置CSRF_TRUSTED_ORIGINS仍无效
解决Django CSRF来源校验失败问题
已经添加了csrf_token和CSRF_TRUSTED_ORIGINS但仍报错,试试这些排查点:
确认
CSRF_TRUSTED_ORIGINS的格式:不要在域名末尾加斜杠,确保拼写完全匹配请求的Referer域名。比如你的配置['https://teamsparrowpp-qrgen-production-6a43.up.railway.app']格式正确,但要检查settings.py里有没有拼写错误(比如大小写、多余字符)。配置代理相关参数:Railway部署的服务通常走平台代理,需要在settings.py里添加:
USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')这能让Django正确识别原始请求的协议和主机,避免代理导致的来源校验偏差。
检查请求的Referer头:打开浏览器开发者工具(F12),在Network标签找到失败的POST请求,查看Request Headers里的
Referer字段,确认它和你配置的CSRF_TRUSTED_ORIGINS完全一致(包括https前缀、域名部分)。清除浏览器缓存和Cookie:旧的CSRF Token缓存可能和新配置冲突,清理后重新测试。
确认
ALLOWED_HOSTS包含目标域名:虽然这不是CSRF校验的直接条件,但如果主机不在允许列表里,可能间接引发请求异常,确保settings.py里有:ALLOWED_HOSTS = ['teamsparrowpp-qrgen-production-6a43.up.railway.app']
内容的提问来源于stack exchange,提问作者Nadia Ahmed
相关产品推荐
相关产品推荐

