1

I have 403 FORBIDDEN error in agon-ratings plugin when submit rating. I have read the doc. But csrf token exists in header:

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

Any help with this issue will be appreciated. Thanks in advance

4

2 回答 2

1

我猜您正在通过 ajax 请求发布帖子,如果那是正确的,那么您需要将 csrf 令牌作为 POST 数据的一部分或通过 X-CSRFToken 标头发送。

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

您链接的 Django 文档有一个关于如何执行此操作的工作示例(如果您使用 jQuery,它主要是复制和粘贴工作)

于 2013-10-04T11:19:35.127 回答
0

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

当您在 django 设置中编写 CSRFMiddleware 和 csrf 上下文处理器时,这是强制性的。

于 2013-10-04T11:57:24.430 回答