Forbidden (CSRF cookie not set.) ajax post

Forbidden CSRF cookie not set. ajax post 解决

由于Django对提交的POST表单做安全性验证,而ajax提交的一般只有数据,所以

  1. 禁用CSRF校验(全局禁用 或 局部禁用)
  2. 在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却没问题
问题是解决了,但不是很懂跨域的安全性验证

发布了5 篇原创文章 · 获赞 1 · 访问量 1280

猜你喜欢

转载自blog.csdn.net/zy4321234zx/article/details/89310337
今日推荐