【问题标题】:403 on ajax request to own domainajax请求拥有域的403
【发布时间】: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

我真的很困惑。

【问题讨论】:

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


    【解决方案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代码会破坏我的页面...
    猜你喜欢
    • 2018-08-12
    • 2012-12-24
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2020-01-13
    • 2013-03-06
    • 1970-01-01
    相关资源
    最近更新 更多