Forbidden CSRF cookie not set. ajax post 解决
由于Django对提交的POST表单做安全性验证,而ajax提交的一般只有数据,所以
- 禁用
CSRF
校验(全局禁用 或 局部禁用) - 在ajax提交的表单中添加上
CSRF
校验信息
先使用{% csrf_token %}
生成csrf信息
<header class="am-topbar" style="height: 50px">
{% csrf_token %}
……
</header>
运行后效果如下
<header class="am-topbar" style="height: 50px">
<input type="hidden" name="csrfmiddlewaretoken" value="rGmBuQafJncYSJkNUWjknpvMFvTxZafo2jx4VxyE4KEKrkb6KnFPbHbimI82wzxt">
</header>
{% csrf_token %}
其实就是一个隐藏的input
标签嘛
那么只需要在ajax提交时加上input
数据就好了
var formData = new FormData(); // 新建空白form表单
var csrf = $("header>input[type='hidden']"); // 选择csrf input
formData.append(csrf.attr("name"), csrf.attr("value")); // 把name作为键, value作为值 添加进表单
但是!直接使用IP地址127.0.0.1
还是会触发403
,使用localhost
却没问题
问题是解决了,但不是很懂跨域的安全性验证