javascript - 使用 Django 1.10 + AJAX 的安全性,无需任何 HTML 表单

标签 javascript ajax django security

我通过 AJAX 发出 POST 请求,无需 HTML 表单。 是否存在安全问题? 为什么没有csrf错误?因为我没有发送任何csrf数据并且django中启用了csrf?

切换状态.js

jQuery(document).ready(function($) {
    $("#switch-status").click(function(){
    $.ajax({
        url: '/account/switches/',
        data: {'toggle': 'status'}
    });
    });
});

查看.py

@login_required
def switches(request):
    toggle = request.GET.get('toggle', None)
    current_user = request.user
    update = Switches.objects.get(owner=current_user)
    if toggle == 'status':
    if update.status is True:
        update.status = False
    else:
        update.status = True
    update.save()
    return HttpResponse('')

最佳答案

default method ajax 函数是 GET 函数,而不是 POST。所以,做一个:

$.ajax({
    url: '/account/switches/',
    data: {'toggle': 'status'}
});

意味着创建了一个ajax GET。因此,您没有执行 POST 请求。

如果您想要一个 POST 请求,请按如下方式操作:

$.ajax({
    method: 'POST',
    url: '/account/switches/',
    data: {'toggle': 'status'}
});

当然,您必须包含 CSRF token ,因为如果您尝试在不包含 CSRF token 的情况下尝试 POST ,将会失败。看here如何实现这一点。

关于javascript - 使用 Django 1.10 + AJAX 的安全性,无需任何 HTML 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43602518/

相关文章:

javascript - 分隔 Node 中的 require 实例

django - Django管理员TabularInline-是否有添加自定义html列的好方法?

javascript - 使用 django-select2 管理标签

ajax - 无需重定向的 Django 远程身份验证

django聚合聚合字段?

javascript - 如何纠正页脚上重叠的 Accordion

javascript - 我有一个 php 文件,它提供 JSON 输出,并希望在 D3 中使用该 JSON

javascript - 替换或管理ajax请求中的json数据

javascript - 通过 Ajax 从 Django 连续获取图像

javascript - 谁能解释一下这个 ajax .each 函数中的 item 来自哪里?