作者:姚姚姚YTLLL | 来源:互联网 | 2023-07-02 14:42
##加粗样式小程序中使用web-view链接H5网页
1、小程序中,封装统一的接口请求方法(以便在每个接口中都携带 COOKIE,放在 header 中);
const request = parameter => {
if (!parameter || parameter == {} || !parameter.url) {
console.log('Data request can not be executed without URL.');
return false;
} else {
var murl = parameter.url;
var headerCOOKIE = wx.getStorageSync('COOKIE');
var selfCOOKIE = parameter.selfCOOKIE;
selfCOOKIE && (headerCOOKIE += selfCOOKIE);
wx.request({
url: murl,
data: parameter.data || {},
header: {
'COOKIE': headerCOOKIE
},
method: parameter.method || 'POST',
success: function(res) {
parameter.success && parameter.success(res);
},
fail: function(e) {
parameter.fail && parameter.fail(e);
wx.showToast({
title: '网络信号较差',
icon: 'loading',
duration: 3000
});
},
complete: function() {
parameter.complete && parameter.complete();
}
});
}
}
2、小程序中,当用户成功登录之后,保存当前COOKIE;
utils.request({
url: url,
data: {},
success: (res) => {
wx.setStorageSync('COOKIE', res.header["Set-COOKIE"]);
}
});
3、在<web-view></web-view> 内嵌 H5 的页面,获取已保存的 COOKIE 值,使用 url 拼接的方式传给 H5 页面;
<view>
<web-view src="{{url}}" ></web-view>
</view>
let value = wx.getStorageSync('COOKIE'),COOKIE_vl;
if (value) {
COOKIE_vl= value.match(new RegExp("(^| )"+"jxi-m-sid"+"=([^;]*)(;|$)"))[2] ;
}
this.setData({
url: `${this.data.url}?${COOKIE_vl}`
});
4、在H5中的处理方法是: 获取 COOKIE 值并写入。
let COOKIE = window.location.href.split('?')[1];
document.COOKIE = `jxi-m-sid=${COOKIE};domain=${host};path=/`;