gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:28:23 25 4
gpt4 key购买 nike

我通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com