Foxtable(狐表)用户栏目专家坐堂 → 移动方案中取不到Cookie的问题


  共有4039人关注过本帖树形打印复制链接

主题:移动方案中取不到Cookie的问题

帅哥哟,离线,有人找我吗?
Hopenight
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
移动方案中取不到Cookie的问题  发帖心情 Post By:2017/5/3 19:43:00 [显示全部帖子]


以下内容是专门发给有点色,狐狸爸爸,有点蓝浏览



[此贴子已经被作者于2017/5/4 18:11:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/3 20:34:00 [显示全部帖子]

色版,感谢关注!
你说的两个点我都有注意,原因不是这两点造成的。
第一个、最后写入网页了,通过调用ReturnPage(e,wb)
第二个、换成了e.AppendCookie也没有用的。还是会出现我说的问题

[此贴子已经被作者于2017/5/4 12:06:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/3 22:30:00 [显示全部帖子]

以下是引用有点色在2017/5/3 22:17:00的发言:

HasLogin 函数有问题,弹出值你就知道了

 

MsgBox(e.Cookies("safeuserno"))
MsgBox(e.Cookies("sessionid"))

MsgBox(userLgDr is Nothing)

 

返回的是false,自然就不会跳转的。


我已经知道不能正确跳转的原因出在:HasLogin函数里有问题,e.Cookies("safeuserno")、e.Cookies("sessionid")都是Nothing

我是不知道为什么会这样(从e.Cookies里面取不出值来)以及该如何解决!明明从Chrome浏览器里面看到Cookie里面加入safeuserno和sessionid了的。

[此贴子已经被作者于2017/5/3 22:30:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 7:18:00 [显示全部帖子]

以下是引用有点色在2017/5/4 0:42:00的发言:
 我测试,可以取值的。值是能取出来的。你赋值的地方不对。

请问一下,移动方案中Cookie取值方面的代码,是不是在20170422版本中有更新,我还是使用的20170318版本。

为什么我在HasLogin函数里取不了值?难道是因为版本旧了?

[此贴子已经被作者于2017/5/4 9:12:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 10:41:00 [显示全部帖子]

以下是引用有点色在2017/5/4 10:22:00的发言:

 20170318版,测试了一下,确实不行,调用的方式不对,应该有冲突。

 

 你改成模拟【session/application】吧,用vars变量记录,本来cookie就不应该用来设置登录的。

 

赋值

 

        Vars(e.Request.RemoteEndPoint.ToString & "safeuserno") = safeUserNo
        Vars(e.Request.RemoteEndPoint.ToString & "sessionid") = sessionId

 

取值

 

        Dim safeUserNo As String = Vars(e.Request.RemoteEndPoint.ToString & "safeuserno")
        Dim sessionId As String = Vars(e.Request.RemoteEndPoint.ToString & "sessionid")

[此贴子已经被作者于2017/5/4 10:32:00编辑过]

意思是在最新版中不会有这个问题?


 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 11:27:00 [显示全部帖子]

我个人已基本确定是狐表移动方案在Cookie处理方面的问题了,先说一下结论:
在设置Cookie(wb.AppendCookie\e.AppendCookie\e.Cookies.Add)且返回给浏览器之后,Cookie没有马上生效。

随后我会发一个针对以上代码的测试步骤出来。
[此贴子已经被作者于2017/5/4 11:30:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 11:46:00 [显示全部帖子]

以下是引用有点色在2017/5/4 10:22:00的发言:

 20170318版,测试了一下,确实不行,调用的方式不对,应该有冲突。

 

 你改成模拟【session/application】吧,用vars变量记录,本来cookie就不应该用来设置登录的。

 

赋值

 

        Vars(e.Request.RemoteEndPoint.ToString & "safeuserno") = safeUserNo
        Vars(e.Request.RemoteEndPoint.ToString & "sessionid") = sessionId

 

取值

 

        Dim safeUserNo As String = Vars(e.Request.RemoteEndPoint.ToString & "safeuserno")
        Dim sessionId As String = Vars(e.Request.RemoteEndPoint.ToString & "sessionid")

[此贴子已经被作者于2017/5/4 10:32:00编辑过]

不太明白。如果实在不行,我会考虑在客户端上想变通方案,例如使用localStorage或sessionStorage


 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 14:15:00 [显示全部帖子]

以下是引用有点蓝在2017/5/4 13:59:00的发言:
不同子目录的cookie默认不能互相访问

应该是这个原因造成的,谢谢蓝版


 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 14:17:00 [显示全部帖子]

以下是引用有点色在2017/5/4 14:12:00的发言:

 

不一定要把数据存放在客户端。你在服务器端用变量存放客户的信息也是可以的啊。

 

每个客户的ip不同,那就可以用ip地址+名字作为变量的名字,用来存放数据。这样就不需要用到cookie。

 

再者,你看看13楼,不要在不同的子目录。

色版说的确实也是一种好思路。 关于Cookie目录的问题,强烈建议移动方案中设置和读取Cookie时,能提供Optinal参数,用于灵活选择Cookie所在目录


 回到顶部
帅哥哟,离线,有人找我吗?
Hopenight
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:862 积分:10841 威望:0 精华:0 注册:2016/5/6 14:34:00
  发帖心情 Post By:2017/5/4 16:10:00 [显示全部帖子]

以下是引用有点色在2017/5/4 15:46:00的发言:

 

可以自己设置cookie的。生成html的时候,写一段js代码就好了

 

在weui.js文件,加一个函数

 

function mySetCookie(name, value) { 
       var exp = new Date(); 
       exp.setTime(exp.getTime() + 3 * 24 * 60 * 60 * 1000); //3天过期 
       document.cookie = name + "=" + encodeURIComponent(value) + ";expires=" + exp.toGMTString() + ";path=/";  
       return true;  
}; 

 

然后你项目代码插入cookie就好了

 

wb.InsertHTML("<script>mySetCookie('test', '123456')</script>")

感谢色版,我试试看...


 回到顶部
总数 13 1 2 下一页