e***@163.com
e***@163.com
  • 发布:2025-08-04 17:23
  • 更新:2025-08-06 15:11
  • 阅读:95

【报Bug】HarmonyOS NEXT基于CAS身份认证失败问题,302重定向后cookies丢失问题。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.76

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 5.0.5

手机厂商: 华为

手机机型: 6mate60

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

CAS身份认证 重定向后不携带cookie,无法完成身份认证。

预期结果:

正常认证携带cookie

实际结果:

重向定的请求未携带

bug描述:

发布日志:4.36.2024112817 App-HarmonyOS平台 新增 网络请求相关接口持久化保存 cookie,并且发送请求时会自动携带
但是通过抓包工具,正常请求的是携带的,但是302重定向后再请求的不携带cookie。
android之前报过的参考https://ask.dcloud.net.cn/question/106697

大概率是302状态下Set-Cookie的值未设置。

2025-08-04 17:23 负责人:DCloud_UNI_OttoJi 分享
已邀请:
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

更新:

目前鸿蒙的 httpRequest 方法没有暴露手动处理重定向的相关逻辑,不能在跳转过程中做额外处理。跳转携带 header 不是默认行为,你可以使用下面的 uts 插件来兼容鸿蒙。

在安卓中能手动控制跳转的逻辑,所以可以直接修改,鸿蒙上需要临时这样来做。

这里用到了底层的 rcp 来手动控制跳转逻辑,手动处理 cookie 和跳转逻辑

import { rcp } from '@kit.RemoteCommunicationKit';  
import Rcp from '@hms.collaboration.rcp'  

export const handleRedirectFetch = async (url : string, cookieKey : string, cookieValue : string) => {  
  const config : Rcp.RequestCookies = {  
    // [cookieKey]: cookieValue  
  };  
  config[cookieKey] = cookieValue  

  const sessionConfig : rcp.SessionConfiguration = {  
    requestConfiguration: {  
      transfer: {  
        autoRedirect: false,  
      },  
    },  
    headers: {  
      "Content-Type": "application/json"  
    },  
    cookies: config  
  };  

  const session = rcp.createSession(sessionConfig);  
  await session.get(url).then((res : Rcp.Response) => {  

    if (res.statusCode >= 300 && res.statusCode < 400) {  
      console.log(String(res.statusCode))  
      // if 302 手动跳转  
      const location = res.headers.location  

      if (location) {  
        handleRedirectFetch(location, cookieKey, cookieValue)  
      }  

    } else {  
      console.log(JSON.stringify(res));  
    }  
  })  
}

私聊提供复现工程,说明操作步骤吧

  • e***@163.com (作者)

    已私信,经初步分析是302重定向可能没再次经过uni.request请求,直接由鸿蒙的http接口接管了,所以设置cookie就请求了。

    2025-08-05 09:53

  • DCloud_UNI_OttoJi

    回复 e***@163.com: 我更新下 uts 解决方案

    2025-08-06 15:10

要回复问题请先登录注册