欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

后台设计可能遇到的问题(1)

程序员文章站 2024-02-18 16:49:52
...

问题:跨域; 解决方法:同源策略

后台设计可能遇到的问题(1)
前端与后端分别是不同的端口,这就涉及到跨域访问数据的问题,因为浏览器的同源策略,默认是不支持两个不同域名间相互访问数据,而我们需要在两个域名间相互传递数据,这时我们就要为后端添加跨域访问的支持。
解决的步骤:在项目后台配置文件中设置:
(1)添加应用:
(2)设置中间件:
(3)添加白名单:设置允许携带cookie

# 白名单
CORS_ORIGIN_WHITELIST = (
    '127.0.0.1:8080',
    '127.0.0.1:8000',
    'localhost:8080',
    'www.xxx:8080',
    'api.xxxx:8000'
)
CORS_ALLOW_CREDENTIALS = True  # 允许携带cookie

Session认证机制的缺陷:

假如用户登录时候访问的是服务器1,但是获取信息时访问服务器2 ,由于服务2上没有登录的session信息,所以又得登录,难以得到扩展
后台设计可能遇到的问题(1)
后台设计可能遇到的问题(1)
(1)作用?:记录用户的登录状态,或者为用户创建身份认证的凭证
(2)Token保存在请求头中,在服务器端一般Access-Control-Allow-Origin: *。
(3)JWT的结构(三部分)
①头部(header)json数据格式:
{
‘typ’: ‘JWT’,
‘alg’: ‘HS256’
}
②载荷(payload):存放有效的信息: 标准中注册的声明
公共的声明 \ 私有的声明
③签名:需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分
secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,

一般是在请求头里加入Authorization,并加上Bearer标注:
fetch(‘api/user/1’, {
headers: {
‘Authorization’: 'Bearer ’ + token
}
})