ajax请求拥有域的403
Posted
技术标签:
【中文标题】ajax请求拥有域的403【英文标题】:403 on ajax request to own domain 【发布时间】:2011-11-11 15:47:32 【问题描述】:我正在尝试使用 ajax 请求在不同的视图中调用函数,但出现 403 错误。
摘自我的模板:
FB.ui( method: 'apprequests', title: 'Invite your friends to answer questions!', message:'Invite your friends!',
function(response)
jQuery.ajax(
url: "/canvas/request/",
type: "post",
data: qid: qid , request_ids: response.request_ids
)
);
摘自我的观点:
def save_request(request):
print("in save request")
for id in request.request_ids:
share = ShareRequest
share.question = request.qid
share.share_id = id
share.save()
摘自我的网址:
urlpatterns = patterns(...
(r'^request/', save_request),
返回 [06/Sep/2011 13:35:56] "POST /canvas/request/HTTP/1.1" 403 2332
我真的很困惑。
【问题讨论】:
【参考方案1】:也许您需要将 CSRF 令牌添加到您的请求中?一些细节在https://docs.djangoproject.com/en/dev/ref/contrib/csrf/。
【讨论】:
我想到了,但不是跨站请求。不过我想我还是会试试的 @Colleen 您似乎完全错误地理解了 CSRF 保护的全部内容。请阅读 Dylan 的链接。 我确实误解...被 CSRF 保护捕获。”,但是我的页面没有加载...【参考方案2】:让自己不处于隐身模式的糟糕但快速的解决方案:
from django.views.decorators.csrf import csrf_exempt
在您的视图中使用这个 @csrf_exempt
装饰器来忽略 csrf 问题。
但这是一个坏习惯。因此,请确保您的网站 csrf
受到保护。并遵循 django 文档。
【讨论】:
谢谢,我现在这样做了。需要调查一下为什么Django的js代码会破坏我的页面...以上是关于ajax请求拥有域的403的主要内容,如果未能解决你的问题,请参考以下文章
AJAX 请求:/wp-admin/admin-ajax.php 403