Vue+Django前后端请求时出现CSRF缺失错误

在Vue和Django前后端分离项目中,遇到CSRF令牌缺失导致的错误。该问题源于Django的跨域访问检验。解决办法是在Vue的POST请求中添加与cookies匹配的CSRF令牌到headers中。
摘要由CSDN通过智能技术生成

Vue+Django前后端请求时出现CSRF缺失错误

问题再现

最近在做一个项目,选定的是前后端分离开发,后端使用python的Django框架,前端使用Vue.js。在一开始的时候对后端进行编写时,虽然依照RESTFUL规范进行开发的,但是在代码的规范性和美观性上有缺失,所有最近又将其更新为基于类的视图。

export function workdayUpdate(data, token, date) {
   
  return request({
   
    url: '/manage/workday/',
    method: 'put',
    
Vue3 中调用 Django3 的登录接口,需要在 Django3 中编写登录视图,并使用 Django 自带的用户认证系统来验证用户身份。以下是实现步骤: 1. 在 Django3 项目中创建一个 app,并在 app 中创建一个登录视图: ```python from django.contrib.auth import authenticate, login from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def login_view(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return JsonResponse({'success': True}) else: return JsonResponse({'success': False, 'message': '用户名或密码错误'}) ``` 在这里,使用 Django 自带的 `authenticate` 函数来验证用户身份,并使用 `login` 函数将用户登录。登录成功返回 `{'success': True}`,登录失败返回 `{'success': False, 'message': '用户名或密码错误'}`。 2. 在 Vue3 组件中使用 axios 发送登录请求: ```javascript import axios from 'axios' export default { data() { return { username: '', password: '' } }, methods: { async login() { try { const response = await axios.post('/api/login/', { username: this.username, password: this.password }) if (response.data.success) { // 登录成功后的逻辑 } else { console.error(response.data.message) // 登录失败后的逻辑 } } catch (error) { console.error(error) // 登录失败后的逻辑 } } } } ``` 在这里,假设 Django3 的登录接口是 `/api/login/`,并且接收 `username` 和 `password` 两个参数。登录成功调用登录成功后的逻辑,登录失败调用登录失败后的逻辑。 这样就可以在 Vue3 中调用 Django3 的登录接口了。注意,在开发过程中,需要同启动 Vue3 和 Django3 的开发服务器,并且将 Vue3 的开发服务器代理到 Django3 的开发服务器上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值