Django配置跨域请求

今天又遇到了一个问题,之前没用vue来调django的接口,结果在postman能请求数据能正常返回,在vue里又老失败,呕以为是地址写错了或者调用函数用错了,结果都不是,从11点多卡到下午3点多QAQ累得趴了会才起来继续看,最后还是看错误自己分析出来的,所以又得了一次教训!出问题先看报错再靠自己经验分析!报错很重要很重要很重要!单纯地靠自己经验会走很多弯路!

问题如下:

我在postman测试接口时正常。

1618126025964

在vue里请求就报错,此时我的axios也是正常的,代码大概也没错

1618126068075

这里都说了是跨域问题了啊啊啊疯了早点注意多好,因为考虑到安全性,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.

1618125964377

解决办法:

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',
)

posted @   碎了的冰  阅读(360)  评论(0编辑  收藏  举报
编辑推荐:
· .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脚本
点击右上角即可分享
微信分享提示