如何在UniApp中每次请求都携带Cookie |
您所在的位置:网站首页 › cookie每次都变 › 如何在UniApp中每次请求都携带Cookie |
UniApp中每次请求都携带Cookie
如何确保每次请求都携带Cookie是我们开发中很常见的需求。UniApp在这方面也有自己的处理方式,下面我们来一一探讨: 1. 使用uni.request封装请求在UniApp中,我们可以使用uni.request来进行网络请求。它与原生的wx.request类似,只不过做了一些兼容处理和封装,使得在UniApp中更加方便使用。我们可以在公共的请求函数中对uni.request进行二次封装,以实现每次请求都携带Cookie的需求。 我们可以将请求函数封装成一个公共的JS文件,命名为request.js。首先,在该文件中定义一个常量cookie,用于存储Cookie值: let cookie = ''; 然后,我们定义一个request函数,该函数接收传入的参数及requestConfig,用于进行更细致的配置(例如请求方式、请求头等): const request = (url, params, requestConfig) => { const reqConfig = requestConfig || {} const contentType = reqConfig.contentType || 'application/json'; return new Promise((resolve, reject) => { uni.request({ url, method: reqConfig.method || 'GET', data: params, header: { 'Content-Type': contentType, 'Cookie': cookie // 携带Cookie }, success: (res) => { const data = res.data; if (data.code === 0) { resolve(data) } else { reject(data.msg) } }, fail: (err) => { reject(err) } }); }); }; 在该函数中,我们在请求头中添加了Cookie键值对,将存储在cookie常量中的Cookie值一并带上。需要注意的是,如果每次请求都需要携带Cookie的话,那么我们需要确保cookie变量在请求之前就已经被赋值了。 最后,我们还需要编写一个setCookie函数,用来设置cookie变量的值: const setCookie = val => { cookie = `SESSION=${val}`; }; 需要注意:这种方式并不适用于uni.uploadFile方法,在使用上传文件功能时,需要进行特别的处理。 2. 在请求拦截器中处理CookieUniApp中提供了请求拦截器,我们可以在请求拦截器里面对请求进行处理。在main.js文件中,我们可以定义一个请求拦截器,该函数会在每次请求发送之前被调用。 uni.interceptors.request.use(config => { config.header.Cookie = 'xxx'; // 添加Cookie return config }, error => { return Promise.reject(error) }); 在该函数中,我们可以通过config.header.Cookie的方式添加Cookie。需要注意的是,该方法仅适用于ajax请求,对于上传文件、下载文件等情况需要进行特别处理。 3. 在请求头里添加Cookie如果我们已经有了Cookie的值,那么我们可以直接将其添加到请求头里。对于uni.request方法,我们可以在请求头中添加Cookie键值对: const request = (url, params) => { const header = { 'Content-Type': 'application/json;', 'Cookie': 'Session=xxxxx' }; return new Promise((resolve, reject) => { uni.request({ url, method: 'POST', data: params, header, success: (res) => { const data = res.data; if (data.code === 0) { resolve(data) } else { reject(data.msg) } }, fail: (err) => { reject(err) } }); }) }; 在请求头中添加Cookie键值对,将存储在Cookie变量中的Cookie值带上即可。 总结以上就是UniApp中每次请求都携带Cookie的三种实现方式。根据实际开发的需求,我们可以选择适合自己的方式。需要注意的是,对于上传文件、下载文件等操作,我们需要进行特别的处理。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |