先后端分离的模式下,后端使用Django RestFramework,前端使用uni-app来进行APP的开发。
前端代码:html
Django后端跨域配置
settings.py配置文件中添加:
INSTALLED_APPS = [前端
'corsheaders',
]django
中间件中添加后端
'corsheaders.middleware.CorsMiddleware', # 注意顺序 必定是在common中间件的前面
MIDDLEWARE = [跨域
# 'accounts.MyCsrfMiddleware.CORSMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', # 注意顺序 必定是在common中间件的前面 'django.middleware.common.CommonMiddleware',
]
settings.py最末尾添加:安全
CORS_ORIGIN_ALLOW_ALL = True 容许携带cookie: CORS_ALLOW_CREDENTIALS = True
测试跨域访问是否成功的视图函数cookie
`def test(request): return JsonResponse({"status": 0, "message": "This is Django Message!"}) ` rom django.contrib import admin
URLsession
from django.urls import path from django.conf.urls import url, include urlpatterns = [ # test ok url(r'test/', views.test), ]
测试,在Hbuilder中启动前端项目,同时后端项目也启动app
问题:
缘由
请求头的问题cors
最简单的方式,uni-app中的header不加由于跨域是由后端来控制的,后端能够设置容许哪个域名来与它进行通讯,django后端默认是不容许跨域的,处于安全性的考虑,可是若是须要先后端进行通讯,好比前端是aaaa.com域名,后端是bb.com域名的状况下,能够在后端进行跨域请求的相关配置(如上)。
【我的理解,欢迎留言】
参考:O