在django痛苦评级中的403 FORBIDDEN

时间:2013-10-04 11:04:33

标签: python ajax django

提交评分时,agon-ratings插件中出现403 FORBIDDEN错误。 我看过doc。但是csrf标记存在于标题中:

Request Headersview source  
Accept  */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cache-Control   no-cache
Connection  keep-alive
Content-Length  22
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Cookie  csrftoken=6C7zHmrBufWbiYeTXwRkCWC9hDfdxGoW;    sessionid=4d6b6977721fcb97f6903d0aaab5e632
Host    localhost:8000
Pragma  no-cache
Referer http://localhost:8000/news/40/asdas/
User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:23.0) Gecko/20100101   Firefox/23.0
X-Requested-With    XMLHttpRequest

对此问题的任何帮助将不胜感激。 提前致谢

2 个答案:

答案 0 :(得分:1)

我猜你是通过ajax请求发帖子的,如果这比你需要发送csrf令牌作为POST数据的一部分或通过X-CSRFToken标题更正。

我在你发布的请求标题中没有看到任何内容。

你链接的Django文档有一个关于如何做到这一点的工作示例(如果你使用jQuery,它主要是一个复制和粘贴工作)

答案 1 :(得分:0)

您正在使用POST方法。使用POST方法,您需要在表单元素内的HTML中编写{%csrf_token%}或在ajax请求中传递csrftoken,即https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

在django设置中编写CSRFMiddleware和csrf上下文处理器时必须使用。