微信小程序不支持Cookie,因此,需要借助小程序的数据缓存来实现Cookie.
环境: mpvue + fly.js
登录成功后,在处理登录验证的method里,加入以下内容保存Cookie:
wx.setStorageSync("sessionid",response.headers["set-cookie"][0])
我对fly.js的配置和拦截器单独设置,放在src/utils/fly.js里,内容如下:
/**
* Created by kevin on 2019-10-11.
* http配置
*/
import store from '@/store/index'
import * as types from '@/store/mutation-types'
var Fly=require("flyio/dist/npm/wx")
var fly=new Fly
// fly配置
fly.config.timeout=5000
// 这个url一定要找到nginx的相应location ^~ 部分
fly.config.baseURL = 'https://i.foo.cn/api/v2/'
// http request 拦截器
fly.interceptors.request.use(
(request) => {
if (store.state.user) {
request.headers.Authorization = `isLogin`
request.headers.Cookie = wx.getStorageSync("sessionid")
}
return request
},
err => {
return Promise.reject(err)
},
)
// http response 拦截器
fly.interceptors.response.use(
(response) => {
//只将请求结果的data字段返回
return response.data
},
(err) => {
//发生网络错误后会走到这里
//return Promise.resolve("ssss")
}
)
export default fly
然后在全局的main.js里,加入以下内容:
import fly from '@/utils/fly'
Vue.prototype.$http=fly
现在可以用this.$http.get(or post等)发起请求了.
万事大吉,enjoy it!