jQuery Ajax、axios、fetch、weex、微信小程序(Android)保持session会话一致。

一、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);
});

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值