问题
前段时间,做了一次服务器减负的同时,也把所有的遗留网站都加上了 HTTPS 支持,让客户免受推荐 HTTPS 证书销售公司的电话骚扰(他们的话术很吓人,客户听了以后会害怕地找我,这就很让我烦心了)。
因为遗留的都是企业官网,很少人会登陆更新内容,所以很久以后,客户才来联系我说后台登陆不上了。我一试,发现出现了 403 错误:
禁止访问 (403)
CSRF验证失败. 请求被中断.
您看到此消息是由于HTTPS站点需要浏览器发送 ‘Referer HTTP头‘,但是目前没有被发送。出于安全考虑,浏览器必须发送该HTTP头,以确保您的浏览器没有被第三方劫持。
如果您已经设置浏览器禁用 ‘Referer’ 头,请重新启用,至少针对这个站点,全部HTTPS请求,或者同源请求(same-origin)启用发送该HTTP头。
更多信息请设置选项DEBUG=True。
探索
奇哉!我记得我们的Django
项目一直是有做 CSRF 验证的。但不管三七二十一,先爬上服务器看看。配置文件里的corsheaders.middleware.CorsMiddleware
和corsheaders
都好好地躺在MIDDLEWARE
和INSTALLED_APPS
配置项里。
重新看出错信息,有一段如果您已经设置浏览器禁用 ‘Referer’ 头,请重新启用
,这很是奇怪。都不知道浏览器还能禁用 Referer
头,搜索也找