wenju
wenju
  • 发布:2015-07-05 17:11
  • 更新:2015-12-22 18:17
  • 阅读:10597

【已解决】mui.ajax和XMLHttpRequest如何设置Cookie?

分类:HTML5+

我们的项目是MUI集成Android原生代码
Android登陆后,想把登陆状态Cookie传给MUI的界面

mui.ajax和XMLHttpRequest如何设置Cookie?
我用了这么多种方法都不行呢

我们在Android用DefaultHttpClient联网设置Cookie都行呢

2015-07-05 17:11 负责人:无 分享
已邀请:
dev_wen

dev_wen

ajax跨域+设置Cookie
mui.ajax('http://192.168.11.190:8087/invest/M2login.action',{
data:{
userName:'userName',
password:'password'
},
dataType:'html',//服务器返回json格式数据
type:'post',//HTTP请求类型
timeout:10000,//超时时间设置为10秒;
success:function(data){
console.log(data);
plus.navigator.setCookie( "http://192.168.11.190:8087/", "JSESSIONID="+data);
},
error:function(xhr,type,errorThrown){
//异常处理;
console.log(type);
}
});

Dev_蓝

Dev_蓝

我也碰到这个问题卡顿中 大神解答一下!

蔡繁荣

蔡繁荣 - 发表是最好的记忆

通过cookie的方式去开发App,本身这种做法就是不推荐的,违反RESTful原则。

  • 赵梦欢

    怎么不行,比如我要做一个模拟登陆我们学校的教务系统,可是我又不可能搞到接口,我怎么做啊!

    2015-07-06 00:02

  • 蔡繁荣

    回复 赵梦欢:这些应交给服务端去处理

    2015-07-06 00:09

  • 赵梦欢

    回复 蔡繁荣:你的意思通过服务器端自己写接口,然后app调用?

    2015-07-06 08:13

  • wenju (作者)

    现在不大好改成token了 不然以前发的版本又不兼容~~(>_<)~~

    2015-07-06 08:49

wenju

wenju (作者) - https://www.mescroll.com -- 精致的下拉刷新和上拉加载组件

没有人答,自己解决了!!~~(>_<)~~
输出了自己的响应头,原来key是Set-Cookie!! 不是Cookie!
xhr.setRequestHeader("Set-Cookie", "JSESSIONID=" + plus.storage.getItem("JSESSIONID"))

这样就可以了

又折腾了一个早上,心中一万只cnm欢腾

  • 赵梦欢

    完整代码可以贴出来学习一下吗,完全是新手

    2015-07-06 15:58

  • wenju (作者)

    /* Post联网



    • success 成功的回调 function(data)

    • error 异常的回调 function(data)

    • param参数 字符串拼接 "user=HBuilder&test=value"

    • */

      function xhrPost(url, success,error, param) {

      var xhr = new plus.net.XMLHttpRequest();

      xhr.onreadystatechange = function() {

      if (xhr.readyState == 4) {

      if (showLoading == null || showLoading) {

      plus.nativeUI.closeWaiting(); //关闭进度条

      }

      if (xhr.status == 200) {

      console.log(url + "=联网成功=" + xhr.responseText)

      var data = xhr.response;

      success(data);

      } else {

      error(data);

      }

      }

      }

      xhr.timeout = 10000;

      xhr.responseType = "json";

      xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //传参必须写

      xhr.setRequestHeader("Set-Cookie", "JSESSIONID=" + plus.storage.getItem("JSESSIONID"));

      //登陆成功后保存Cookie的JSESSIONID;plus.storage.setItem("JSESSIONID")

      xhr.send(param);

      }

    2015-07-06 17:36

  • 唐自然

    回复 wenju: 大佬,请问怎么拿到 Cookie

    2018-07-27 16:42

Jonny515688

Jonny515688

有代码可以借鉴一下吗?

  • wenju (作者)

    最终用这个方法 兼容Android5.0

    plus.navigator.setCookie( "网站域名", "cookie名=cookie的值");


    比如我现在用的就是这样的:

    plus.navigator.setCookie( "http://www.xxx.com", "JSESSIONID=" +plus.storage.getItem("JSESSIONID"));

    2015-11-20 18:46

  • wenju (作者)

    写在每次发生ajax之前就行了

    2015-11-20 18:46

  • Jonny515688

    回复 wenju:谢谢你!! 不过我想问一下啊,JSESSIONID这个键就是代表cookie吗?不是cookie这个键或是setcookie键吗?测试了好几次,设置的cookie都不起作用

    2015-11-24 15:11

  • wenju (作者)

    回复 Jonny515688:键有的是cookie ,Cookie, setcookie ,setCookie ,我的服务器却是JSESSIONID, 当时调了好久 最后叫服务器端输出请求头看Cookie对象才知道的 你也可以抓包看请求头里面的cookie键是什么..

    2015-11-26 09:47

  • wenju (作者)

    回复 Jonny515688:http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.setCookie

    2015-11-26 09:49

  • Jonny515688

    回复 wenju:非常感谢!!!

    2015-11-26 12:03

jijinduoduo

jijinduoduo

太棒了,谢谢,
http://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.setCookie

该问题目前已经被锁定, 无法添加新回复