HarmonyOS鸿蒙Next中各位高手!axios发送post请求时,后端采用Django如何配置CSRF?如何接收前端数据?
HarmonyOS鸿蒙Next中各位高手!axios发送post请求时,后端采用Django如何配置CSRF?如何接收前端数据?
各位高手!axios发送post请求时,后端采用Django。
如何配置CSRF?
如何接收前端发送过来的数据?
请大神指点!感谢
在Django框架中,为了确保Web应用的安全性,防止CSRF(Cross-site request forgery)攻击,开发者需要在处理非GET类型的请求时添加一个“X-CSRFToken”令牌。这个令牌是由Django框架生成的,Django会检查每个非GET类型的http请求的headers里面的X-CSRFToken项的值是否和cookie里面保存的值相同,如果不相同或者缺失,就拒绝这个请求,如果相同,说明这次请求是从真实用户发起的。 示例代码如下:
// django框架第一次响应来自某个客户端的请求时,会在服务器端随机生成一个token。
const csrftoken = response.headers['X-CSRFToken']
// 客户端需要把这个token保存。后续每次请求都要带上这个token,
let res: AxiosResponse = await axios.request({
url: url,
method: method,
data: data,
headers: { 'X-CSRFToken': csrftoken },
})
更多关于HarmonyOS鸿蒙Next中各位高手!axios发送post请求时,后端采用Django如何配置CSRF?如何接收前端数据?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
谢谢!
在HarmonyOS鸿蒙Next中使用axios发送POST请求时,需在请求头添加CSRF token。Django后端需配置CSRF中间件,前端从cookie获取csrftoken
并设置在headers的X-CSRFToken
字段。后端使用@csrf_exempt
装饰器可豁免CSRF验证。接收数据时,Django通过request.POST
获取表单数据,request.body
处理JSON数据,使用json.loads()
解析。确保Django的settings.py
中配置了CSRF_TRUSTED_ORIGINS
允许鸿蒙应用域名。
在HarmonyOS Next应用中使用axios发送POST请求到Django后端时,CSRF配置与数据接收方法如下:
1. Django后端CSRF配置
- 确保
django.middleware.csrf.CsrfViewMiddleware
已启用(默认在settings.py的MIDDLEWARE中) - 前端需从Cookie获取CSRF token,在axios请求头中携带:
// 获取CSRF token(假设Cookie中名为csrftoken) const csrfToken = document.cookie.replace(/(?:(?:^|.*;\s*)csrftoken\s*=\s*([^;]*).*$)|^.*$/, "$1"); // axios配置 axios.post('/your-endpoint/', data, { headers: { 'X-CSRFToken': csrfToken, 'Content-Type': 'application/json' } })
- 若使用
@csrf_exempt
装饰器可局部禁用CSRF(不推荐)
2. Django接收前端数据
- 在视图函数中通过
request.body
解析原始数据:import json from django.http import JsonResponse def your_view(request): if request.method == 'POST': data = json.loads(request.body) # 解析JSON数据 param1 = data.get('key1') param2 = data.get('key2') return JsonResponse({'status': 'success'})
- 若前端发送FormData,使用
request.POST
获取:param = request.POST.get('field_name')
关键点:
- 确保前端与后端的Content-Type一致(JSON推荐
application/json
) - 对于预检请求(OPTIONS),Django需配置CORS中间件处理跨域
- 生产环境应保持CSRF防护,仅对可信来源开放
按以上配置即可正常处理POST请求及CSRF验证。