Django配置跨域请求
今天又遇到了一个问题,之前没用vue来调django的接口,结果在postman能请求数据能正常返回,在vue里又老失败,呕以为是地址写错了或者调用函数用错了,结果都不是,从11点多卡到下午3点多QAQ累得趴了会才起来继续看,最后还是看错误自己分析出来的,所以又得了一次教训!出问题先看报错再靠自己经验分析!报错很重要很重要很重要!单纯地靠自己经验会走很多弯路!
问题如下:
我在postman测试接口时正常。
在vue里请求就报错,此时我的axios也是正常的,代码大概也没错
这里都说了是跨域问题了啊啊啊疯了早点注意多好,因为考虑到安全性,Django是会默认拦截CORS的,防止黑客制造跨域请求来攻击网站,所以我们需要主动配置允许跨域请求才能让vue这个在8080端口上的应用访问到django这个8000端口上的应用。
Access to XMLHttpRequest at 'http://127.0.0.1:8000/polls/' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
解决办法:
1.安装django-cors-headers
pip3 install -i https://pypi.douban.com/simple django-cors-headers
2.在setting.py中的APPS加入corsheaders
INSTALLED_APPS = [
...,
'corsheaders'
]
配置中间件
MIDDLEWARE = [
...,
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware'
]
允许跨域请求
'''
跨域设置
'''
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = ()
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
分类:
【框架】Django
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
2020-04-11 sql server解决无法删除修改拥有外键约束的表或表的记录字段
2020-04-11 五只简简单单的shell脚本