把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)

1.继上一篇随笔,链接点我,解决手机端cookie的问题。

2.上次用cookie+redis实现了session,并且手机浏览器可能回传cookies有问题,所以最后用js取出cookie跟在请求的url后面。

3.但是今天发现了新的问题,js取cookie存的sessionId为空,情况如下:

(1)QQ浏览器能获取某些cookie,另一些cookie获取为空,猜测是后台Response SetCookie的时候,手机端浏览器没能良好的接受。

(2)UC浏览器测试正常。

(3)Safari情况和QQ浏览器相同。

(4)PC端正常。

4.这样的情况下,我最终确定问题是, 后台对手机浏览器setCookie时出现问题。

5.解决办法是,将需要存在cookie中的值放到json返回结果中一并返回。

6.在js中使用setCookie的方法来向浏览器设置cookie.

7.SetCookie方法如下。

function setCookie(name,value)
{
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
} 
时间: 2024-10-03 14:46:15

把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)的相关文章

js判断移动终端(手机浏览器)

方法1: <script type="text/javascript">         var browser = {             versions: function () {                 var u = navigator.userAgent, app = navigator.appVersion;                 return {//移动终端浏览器版本信息                     trident: u.

HTMLFormElement获取表单里面所有的值然后以json形式返回

function HTMLFormElement(){ this.init(); return this.json; } HTMLFormElement.prototype.init = function(){ this.json = {}; this.inputs = document.querySelectorAll("input"); this.texts = document.querySelectorAll("textarea"); this.sels =

Zepto.js touch模块深入分析 解决手机点击事件

源码: // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT license. ; (function($) { var touch = {}, touchTimeout, tapTimeout, swipeTimeout, longTapTimeout, longTapDelay = 750, gesture function swipeDirection(x1

JS如何在不给新空间的情况下给数组去重?

1.先排序,在让相邻元素对比去重 const nums = [3, 1, 1, 5, 2, 3, 4, 3, 5, 5, 6, 4, 6, 6, 6]; Array.prototype.arrayNorepeat = function () { let arr = this; let len = arr.length - 1; let i = 0; //先给数组排序 for (; i < len; ++i) { let j = 0; for (; j < len - i; ++j) { if

JS 不声明第三个变量的情况下实现两数变换

1. 1 var a = 1; 2 var b = 2; 3 a = a + b; //3 4 b = a - b; //1 5 a = a - b; //2 6 console.log(a); 7 //2 8 console.log(b); 9 //1 2. var a = 1; var b = 2; a ^= b; b ^= a; a ^= b; console.log(a); //2 console.log(b); //1 console.log((a ^= b) === (a ^ b)

后台以json数据形式返回之后前台接受的方法以及之后的解析总结

1.前台AJAX请求,后台以对象转JSON形式返回: 后台代码: @RequestMapping(value = "/queryDist", method = RequestMethod.POST) @ResponseBody public Result queryDist(HttpServletRequest request) { Boolean f = false; String devCode = request.getParameter("devCode")

浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

var num = 1;    var str = '1';    var test = 1;    test == num  //true 相同类型 相同值    test === num //true 相同类型 相同值    test !== num //false test与num类型相同,其值也相同, 非运算肯定是false    num == str  //true 把str转换为数字,检查其是否相等.    num != str  //false == 的 非运算    num ==

js跨域及解决方法

什么是跨域 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象.更详细的说明可以看下表: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许

JavaScript中的Cookie 和 Json的使用

JavaScript中的Cookie 和 Json的使用 JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.采用的是完全独立于编程语言的文本格式来存储和表示数据.于2001年开始广泛的推广使用,2005-2006正式的称为主流的数据格式.(JSON是一种高效的数据存储格式,JSON的结构和对象一致,也是以键值对的形式来进行存储的:但是JSON是字符型数据) 功能:JSON主要用来进行数据的存储和文本信息的交换,类似于XML.但是却比XML更加的