2***@qq.com
2***@qq.com
  • 发布:2020-08-16 21:27
  • 更新:2022-08-24 12:53
  • 阅读:4156

【报Bug】升级新版本后uni.request头中的cookie每次请求都不一致,导致session鉴权机制失效,并且服务端会产生大量session

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: WIN10

HBuilderX类型: 正式

HBuilderX版本号: 2.8.6

手机系统: Android

手机系统版本号: Android 9.0

手机厂商: 华为

手机机型: Meta20 Pro

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
        uni.request({  
            url: loading_url,  
            method: 'GET',  
            dataType: 'json',  
            success: (res) => {  
                console.log('===app_loading==' + JSON.stringify(res))  
                var data = res.data.data;  
                uni.setStorage({  
                    key: 'app_loading',  
                    data: data,  
                    success: function() {}  
                });  
            }  
        });

预期结果:

uni.request请求接口时不用手动在header中传cookie

实际结果:

现在如果不手动传header,每次调用uni.request服务端就会产生新的session,因为客户端的session_id不一致

bug描述:

更新到8.4以后安卓端调用uni.request请求接口时,每次生成的set-cookie头都不一样,导致每请求一次接口接口,服务器就产生一个新的session……

同一个接口刷新也会产生新的SESSION,这样一个用户操作APP,服务端就产生了大量的session,以前同一用户操作只有一个SESSION,现在必须手动传cookie,以前版本不用传header头

切换回以前的版本就没这个问题了,但是云打包时又弹出提示版本不一致

而且以前uni.request调用接口登录成功后,在webview里调用h5页面,session状态是同步的,现在也不同步了!

另外苹果端uni.request和webview所有版本都不同步,导致通过session验证的接口,每次都要在原生和H5中登录两次,现在的解决方案是,原生登录后H5做了个模拟自动登录,体验有点差

希望官方能尽快解决这个问题,不然通过session鉴权的服务端很痛苦,由于种种原因不便使用token,最好安卓和IOS端都能解决。

2020-08-16 21:27 负责人:DCloud_Android_DQQ 分享
已邀请:

最佳回复

DCloud_Android_DQQ

DCloud_Android_DQQ

2.8.8 版本已修复。 请更新确认。

  • 5***@qq.com

    我们这边用的最新的,还是获取不到登录的时候存的session,仍然是每次请求都是一个新的session

    2020-08-26 18:03

  • DCloud_Android_DQQ

    回复 5***@qq.com: 加一下我qq 643833712

    2020-08-26 18:12

2***@qq.com

2***@qq.com (作者)

补充一下,服务端通过session验证用户是否登录,但是在uni.request接口中传用户名和密码登录成功后,通过uni.request调用需要登录的接口就没问题,但是在webview中调用需要登录的页面,还会提示未登录……

安卓版本在2.8.4以前没有这个问题,更新到最新版后出问题,苹果端一直有uni.request和webview会话状态不同步的问题。

  • 1***@qq.com

    这种问题官方咋就不处理一下呢,都更新这么长时间了,官方难道就发现不了吗?

    2020-08-17 09:48

  • 2***@qq.com

    我也碰到这个问题,iOS使用webview打开H5页面时第一次总是提示登录,退出再进才可以看到H5页面的内容,请问如何解决这个问题

    2021-07-19 16:17

jxtian

jxtian

你怎么在 webview 中调用需要登录的页面的 ?

  • 蒋帅帅

    我也遇到这种情况,以前可能直接使用session 现在用不了了。什么时候可以解决呢

    2020-08-17 11:00

大灰狼的小白兔

大灰狼的小白兔

我想问下,这种问题怎么解决呢?我这边是一直提示没有登录,但是在登录时,后台就已经setheader了。现在更新完版本之后就一直提示没有登录。

  • 蒋帅帅

    我也是 如果解决了告诉我一下呢

    2020-08-17 11:23

  • DCloud_Android_DQQ

    你好 能不能提供一下 最小可复现的代码。 我们马上修复。

    2020-08-17 12:08

jxtian

jxtian

确认bug,等待处理

小波波

小波波

我也遇到了这个bug,这个不是必现,有时候会set cookie 失败,当set cookie失败的时候重复失败操作就必现,这时候访问别的接口,多试几次,在访问登录接口set cookie就成功了

  • DCloud_Android_DQQ

    提供一下 出现问题的hx版本,以及可以复现 问题的代码把

    2020-11-13 18:42

  • 小波波

    回复 DCloud_Android_DQQ: 2.8.6,然后我自己发了一个bug贴信息在里面 了

    2020-11-13 18:46

  • 3***@qq.com

    我用最新版都会出问题,换回老版本就提示基座不对。

    2020-11-19 10:17

3***@qq.com

3***@qq.com

BUG还未修复,希望官方关注问题。

  • DCloud_Android_DQQ

    你遇到了什么问题。 这个帖子上之上出现问题的用户我都QQ联系确认修复。

    如果你遇到了问题,请留下必要信息。

    2020-11-19 10:50

  • 3***@qq.com

    回复 DCloud_Android_DQQ: 在电脑HBuilderX内置的Web浏览器中,依然会出现set-cookie无效的问题。JSESSIONID每一次请求都会变化。发布到手机端没有异常。

    2020-11-19 15:52

2***@qq.com

2***@qq.com

还没有解决吗?最新3.1.4版本还会出现!!!

  • DCloud_Android_DQQ

    你遇到了什么问题。 这个帖子上之上出现问题的用户我都QQ联系确认修复了。


    如果你遇到了问题,请留下必要信息。

    2021-03-08 11:09

  • 2***@qq.com

    回复 DCloud_Android_DQQ: 我知道问题在哪里了,必须内置浏览器测试手机端才不会导致每次请求session不同。

    2021-03-09 16:48

1***@qq.com

1***@qq.com - 简单

ios在vue界面登录完成后。跳转的到webView界面进行操作。这个时候session2个地方不一致。如果从webView退回登录再进去session就保持一致了。这个bug请问怎么解决

  • DCloud_Android_DQQ

    新提个ask。

    2021-09-28 11:49

  • f***@qq.com

    怎么解决的,我调试也发现了这个问题,很多业务是用webview实现的,vue跳webview没有登录信息

    2021-11-04 17:50

有人窃斧者

有人窃斧者

我遇到一个问题,希望官方解决:uni-app转H5项目时,运行到内置浏览器,点击验证码接口每次刷新的时候,response header的session都会变化,导致前端输入正确的验证码,登录接口还是会提示验证码不正确(登录接口的session也会变化)

有人窃斧者

有人窃斧者

我提了还邀请了官方回答,但是还没回复

2***@qq.com

2***@qq.com - 新手

uni-app项目用Chrome浏览器运行,uni.request 发送请求时的session和服务器响应回来的session不一样,导致服务器端获取不到session中存储的验证码信息

2***@qq.com

2***@qq.com - 新手

切换至内置浏览器时,session验证成功了,应该是我浏览器环境的问题

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