django 1.2.1更新后 关于CSRF token missing or incorrect的问题
生活随笔
收集整理的這篇文章主要介紹了
django 1.2.1更新后 关于CSRF token missing or incorrect的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CSRF(跨站請求偽造),django 1.2.1在projects的setting中默認配置了處理CSRF的中間件 'django.middleware.csrf.CsrfViewMiddleware',
因此,如果post提交表單的html代碼如下,django會拋出一個異常.
CSRF token missing or incorrect.
<form action="{%url listenCms:submitComment articleObj.id %}" method="post">
??????<div class="commentTextArea">
????????<textarea name="content" cols="" rows=""></textarea>
????????<input name="articleId" type="hidden" value="`articleObj`.`id`" />
??????</div>
??????<input name="submit" value="提交評論" type="submit" />
????</form>
同樣在異常信息中,django給出了解決方案.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
所以html如下,在form區域內加上了{% csrf_token %}
這個標簽會自動被django模板處理成一段html
<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='a7ad524eaa3c6f536a6afb7b56a40421' /></div>
這應該是用來讓CsrfViewMiddleware 中間件進行處理時一個標識吧,這個隱藏域的value看起來是一個32位加密的MD5值。
加上{% csrf_token %}的HTML。
<form action="{%url listenCms:submitComment articleObj.id %}" method="post">{% csrf_token %}
??????<div class="commentTextArea">
????????<textarea name="content" cols="" rows=""></textarea>
????????<input name="articleId" type="hidden" value="`articleObj`.`id`" />
??????</div>
??????<input name="submit" value="提交評論" type="submit" />
????</form>
因此,如果post提交表單的html代碼如下,django會拋出一個異常.
CSRF token missing or incorrect.
<form action="{%url listenCms:submitComment articleObj.id %}" method="post">
??????<div class="commentTextArea">
????????<textarea name="content" cols="" rows=""></textarea>
????????<input name="articleId" type="hidden" value="`articleObj`.`id`" />
??????</div>
??????<input name="submit" value="提交評論" type="submit" />
????</form>
同樣在異常信息中,django給出了解決方案.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
所以html如下,在form區域內加上了{% csrf_token %}
這個標簽會自動被django模板處理成一段html
<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='a7ad524eaa3c6f536a6afb7b56a40421' /></div>
這應該是用來讓CsrfViewMiddleware 中間件進行處理時一個標識吧,這個隱藏域的value看起來是一個32位加密的MD5值。
加上{% csrf_token %}的HTML。
<form action="{%url listenCms:submitComment articleObj.id %}" method="post">{% csrf_token %}
??????<div class="commentTextArea">
????????<textarea name="content" cols="" rows=""></textarea>
????????<input name="articleId" type="hidden" value="`articleObj`.`id`" />
??????</div>
??????<input name="submit" value="提交評論" type="submit" />
????</form>
轉載于:https://blog.51cto.com/axiii/326306
總結
以上是生活随笔為你收集整理的django 1.2.1更新后 关于CSRF token missing or incorrect的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server 2003
- 下一篇: Oracle计算时间差函数