403问题简述
出现403表示相关资源的访问或请求被服务器拒绝,针对不同的问题有不同解决方案
资源访问被拒绝
通过控制台可以发现会提示相关资源的访问被拒绝,此时往往是由于文件没有执行权限,修改服务器端的权限即可。
chmod a+x -R ./
POST请求被拒绝
通过控制台会发现POST请求报403(Forbidden),此时是由于django的csrf校验未通过
关闭django的csrf校验
可将django的csrf校验关闭,查看效果
在setting.py中MIDDLEWARE将相应服务接口注释
MIDDLEWARE = [
...
# 'django.middleware.csrf.CsrfViewMiddleware',
...
]
此时再查看相关POST请求,发现能正常返回数据,说明确实是csrf校验的问题
但关闭csrf校验服务会导致django完全不能防御csrf攻击,因此不能如此暴力地解决这一问题
提交csrf_token
方法可参考https://cloud.tencent.com/developer/article/1352455
django的csrf安全工作顺序是:先从后台获取csrf_token 并发送给前端,然后前端在进行form表单提交时,把带有名为csrfmiddlewaretoken,值为 csrf_token 的字段一起发送给后端进行校验。
所以此解决方案便是按照此逻辑,先通过一个接口获取 csrf_token,然后在form表单中一起提交给后端校验
方法仍在尝试