一、APP端(Android)的做法:
将第一次请求得到的 sessionId 塞到请求头的Cookie里面。sessionId 由后台获取后传递到前端
headers:{'Content-Type': 'application/json;charset=UTF-8', "Cookie":"JSESSIONID="+sessionId}, // Content-Type 自己看data参数传输的类型情况判断要不要加或修改
微信小程序
参考:微信小程序之保持登录状态即session不改变(Java)
需要注意的:开发工具和手机调试时cookie的格式不一致,获取session时不要在小程序端返回的数据 cookie获取session(JSESESSIONID),开发工具和手机调试时cookie的格式不一致。在后端获取sessionId后传递到前端使用
Android APP
weex 例子:
const stream = weex.requireModule('stream'); // 网络请求模块
stream.fetch({
headers:{'Content-Type': 'application/json;charset=UTF-8', "Cookie":"JSESSIONID="+Vue.prototype.sessionId}, // Vue.prototype.sessionId 是一个全局变量,存储sessionId
method: 'POST',
type: 'json',
url: Vue.prototype.target+"/user/login",
body: JSON.stringify(user)
}, (ret) => {
});
二、Web端做法(vue.js html5 等)
jQuery Ajax、axios、fetch请求时加上参数:xhrFields: {withCredentials: true},
axios例子:(其它请求同理)
axios 的引入要正确
axios.defaults.withCredentials = true; // axios 的特殊,其它技术可不加
axios({
xhrFields: { // 保证每次请求的sessionid 相同
withCredentials: true
},
method: 'post',
timeout: 5000,
url: url,
data: {}
}).then(response => {
console.log(response)
}).catch(error => {
console.log(error);
});