后端存储的session在每次请求接口的时候出现变化

#其它  6月前   阅读/130

在使用element_ui_admin框架的时候出现每次请求接口的时候后端存储的session一直在变,withCredentials 设置为true

element_ui_admin 跨域问题

后台需要在headers里面存Cookie

这个时候前端需要在里面把withCredentials 设置为true

const service = axios.create({ timeout: 50*60*1000, // request timeout withCredentials: true, })

withCredentials

XMLHttpRequest.withCredentials 属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制(cross-site Access-Control)请求。在同一个站点下使用withCredentials属性是无效的。
此外,这个指示也会被用做响应中cookies 被忽视的标示。默认值是false。
如果在发送来自其他域的XMLHttpRequest请求之前,未设置withCredentials 为true,那么就不能为它自己的域设置cookie值。而通过设置withCredentials 为true获得的第三方cookies,将会依旧享受同源策略,因此不能被通过document.cookie或者从头部相应请求的脚本等访问。

问题

设置 withCredentials: true这个时候就会出现跨域问题那么就需要处理代理了

代理

1.在vue.config.js 文件里面devServer下加上

proxy: { "/api": { target: process.env.VUE_APP_BASE_API, changeOrigin: true, pathRewrite: { "^/api": "" } } }

2.element ui admin 里面的utils -> request.js 里面将原来的process.env.VUE_APP_BASE_API删除。在url前面加上/api/

service.interceptors.request.use( config => { config.url = '/api/' + config.url; ...

ok本地代理可以了
如果打包不需要代理可以在这里加个判断

if (process.env.NODE_ENV === "development") { config.url = '/api/' + config.url; } else { config.url = process.env.VUE_APP_BASE_API + config.url; }

打包上传服务器不是一个服务器又出现跨域

nginx代理

//这个比较简单在nginx.conf配置文件加上下的就好了 *** 是前端process.env.VUE_APP_BASE_API里面的地址 location /api { root html; index index.html; proxy_pass ***; }
元芳,你怎么看?
加载中