403对ajax请求拥有域名

时间:2011-09-06 20:40:56

标签: ajax django facebook django-templates django-views

我正在尝试使用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

我真的很困惑。

2 个答案:

答案 0 :(得分:6)

也许您需要将CSRF令牌添加到您的请求中?一些细节位于https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

答案 1 :(得分:4)

糟糕但快速解决方案,让自己不要处于隐身模式:

from django.views.decorators.csrf import csrf_exempt

在您的观点中使用此@csrf_exempt装饰器来忽略csrf问题。

但这是一个糟糕的习惯。因此,请确保您的网站csrf受到保护。并按照django文档。