django+vue跨域问题:Access to XMLHttpRequest at No ‘Access-Control-Allow-Origin‘ header is present on the

跨域问题牵涉到浏览器的同源策略,为什么浏览器要同源,究其原因是因为浏览器的一种安全机制
同源策略这种安全机制要求网页中的JavaScript代码只能与加载该网页的同一个源(协议、域名和端口号都相同)进行交互,比如在没有设置可跨域的情况下,vue3.x项目默认本机访问url是http://127.0.0.1:5173,而假设使用网络请求服务端接口地址是http://127.0.0.1:8080这样就出现了跨域问题,为什么呢请往下看?
我们知道如下情况皆为跨域:
域名不同: 网页的域名与请求的资源的域名不同(或者服务器ip)。
协议不同:网页使用的协议(如HTTP或HTTPS)与请求的资源的协议不同。
端口号不同:网页的端口号与请求的资源的端口号不同。
很明显8080与5173端口不一样,这也是跨域。

CORS(跨域资源共享):CORS允许服务器声明哪些源(域、协议和端口)有权限访问其资源。服务器可以通过设置响应头来允许指定的源进行跨域访问。CORS是目前最常用的解决跨域问题的方法。
案例: Django+Vue跨域问题的解决:

1、首先你要先安装django-cors-headers 这个包
 

pip install django-cors-headers

2、配置settings.py

安装app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01'#刚才安装的django-cors-headers包所引入的app
    'corsheaders'
]

配置必要参数

#开启debug模式,注意上线运营时要关闭debug
DEBUG = True
# 允许所有ip访问
ALLOWED_HOSTS = ['*']
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
#允许所有的请求头
CORS_ALLOW_HEADERS = ('*')

配置必要中间件

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware', #注意顺序,必须放在这儿
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware', #最后一个也必须放在这儿
]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值