前端跟后端各种交织得请求类型

[复制链接]
查看: 824   回复: 0

250

主题

250

帖子

1389

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1389
2023-10-2 08:41:55   显示全部楼层   阅读模式  
1.jpg
  • GET类型

1后端接口

抛json数据出来给到前端使用

views.py
from django.http import HttpResponse, JsonResponse
import json


# Create your views here.
def responseJson(request):
    # result = json.dumps({'name': '老谢你好'})
    # return HttpResponse(result)
    return JsonResponse({'name': '老谢你好'})

urls.py
urlpatterns += [
    path('api/responseJson',responseJson)

]

2.前端 (VUE3 ES6写法)axios设置get请求获取接口data信息
import axios from 'axios';
let user = '测试数据'
const userService = axios.create({
    baseURL: 'http://127.0.0.1:8000',
    //定义个请求头
})



//console.log(userService);
export { user, userService}
import { userService} from '../api/user'
let user=ref('')
userService({
    methon: 'GET',
    url: '/api/responseJson',
    headers: {
        'X-Requested-With': 'XMLHttpRequest',
        'Content-Type': 'application/json',
    }
}).then((res) => {
    user.value=res.data
}).catch((error) => {  
    console.error = (msg, ...optionalParams) => {   // 重写 console.error  
        console.log(msg, ...optionalParams);        // 打印到console的信息正常显示  
        return false;                               // 返回false,使得控制台不会显示红色错误  
    };  
    console.error('用户接口请求失败:', error);   
})
  • 视图类定义:一个类同时处理post GET delete put等等交互请求


1后端代码示例
# 使用类方法获得装装饰器,去除csrf保护 方便调试
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt, "dispatch")
class GoodsApi(View):
    def get(self, request):
        return JsonResponse({'respondL': '这是get请求'})

    def post(self, request):
        return JsonResponse({'respondL': '这是post请求'})

    def put(self, request):
        return JsonResponse({'respondL': '这是put请求'})

    def delete(self, request):
        return JsonResponse({'respondL': '这是delect请求'})


代码解释:

这段代码使用了Django框架的装饰器特性。装饰器是一种可以修改函数或类的行为的工具,通常用于添加额外的功能,如日志记录、权限检查或副作用等。
具体来说,@method_decorator(csrf_exempt, 'dispatch')这行代码创建了一个装饰器,这个装饰器将应用到类中的所有方法上,增强这些方法的行为。在这种情况下,csrf_exempt装饰器被应用到每个方法上,这意味着每个方法的执行都将免除CSRF(跨站请求伪造)保护。
CSRF是一种攻击手段,攻击者通过在他们控制的网站上放置恶意代码,让用户的浏览器向目标网站发送请求。如果目标网站没有正确的CSRF保护,用户的登录状态就会被攻击者利用,执行他们未授权的操作。因此,对大多数敏感操作来说,如修改或删除数据,都需要进行CSRF保护。
然而,在某些情况下,你可能需要对特定的视图函数免除这种保护,例如在测试或者调试阶段。这就是csrf_exempt装饰器的主要用途。在这个装饰器中,你可以选择免除某个视图函数的CSRF保护。

CSRF概念解释

CSRF(Cross-site request forgery),也被称为跨站请求伪造,是一种攻击方法。攻击者通过伪造用户的浏览器请求,向用户曾经认证访问过的网站发送请求,使目标网站误以为是用户的真实操作而去执行命令。这种攻击方法常用于盗取账号、转账、发送虚假消息等。与跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,而CSRF利用的是网站对用户网页浏览器的信任。CSRF攻击者没有盗取用户的cookie,而是直接利用浏览器存储的cookie让用户去执行某个动作。网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。因此,防御CSRF攻击的一种方法是在发送敏感操作请求时,加入随机数或时间戳等验证方式,以确保请求是来自用户的真实操作。
回复

使用道具 举报

您需要登录后才可以回帖   登录 立即注册

高级模式

南通谢凡软件科技有限公司