一. jwt的扩展使用
1) 安装
pip install djangorestframework-jwt
2) 在settings.py中配置
REST_FRAMEWORK = {
# 引入JWT认证机制,当客户端将jwt token传递给服务器之后
# 此认证机制会自动校验jwt token的有效性,无效会直接返回401(未认证错误)
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
# JWT扩展配置
JWT_AUTH = {
# 设置生成jwt token的有效时间
'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
}
二. CORS跨域问题
在终端中路由前面会有 option 的请求 ,需要在服务器后端提供跨域访问的支持
1) 安装
pip install django-cors-headers
2) 注册应用
INSTALLED_APPS = (
...
'corsheaders',
...
)
3) 注册中间件
MIDDLEWARE = [
# 注意:此中间件添加到中间件的第一个
'corsheaders.middleware.CorsMiddleware',
...
]
4) 添加跨域请求白名单
# CORS跨域请求设置
CORS_ORIGIN_WHITELIST = (
# 备注:允许源地址`http://127.0.0.1:9000`向当前API服务器发起跨域请求
'http://127.0.0.1:9000',
)
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
- 凡是出现在白名单中的域名,都可以访问后端接口
- CORS_ALLOW_CREDENTIALS 指明在跨域访问中,后端是否支持对cookie的操作
5) 总结
同源地址:协议、域名和端口完整相同的地址为同源地址。
跨域请求:客户端发起请求时,如果源请求地址和被请求地址不同源,则请求就是跨域请求。
CORS跨域请求限制: 浏览器针对ajax异步请求,会有CORS跨域请求限制。