📚往期笔录记录🔖:
🔖鸿蒙(HarmonyOS)北向开发知识点记录~
🔖鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
🔖鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
🔖嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
🔖对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
🔖鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
🔖记录一场鸿蒙开发岗位面试经历~
🔖持续更新中……
背景
HarmonyOS Next版中国移动app在开发接入小程序时,发现有一个小程序中的登录信息校验的网络请求一直在报错。排查发现这个接口的入参不正确,通过反编译小程序的源码发现该接口的入参是依赖另一个接口响应头中set-cookie字段的值。打断点对比HarmonyOS Next系统和安卓系统的set-cookie字段值,HarmonyOS Next上值是array类型,安卓上是string类型。

而且抓包看到的服务的响应值也只是一个单纯的文本。

所以,不得不怀疑是鸿蒙系统的网络库把HttpResponse的header中set-cookie值封装成了array类型。
分析源码
http请求是调用OpenHarmony的ohos.net.http的api,所以找到communication_netstack源码库。
HttpResponse的header中除了set-cookie其它字段的值都没问题,所以直接在代码库中搜索“set-cookie”。从定义的常量名就能看出来是和处理http响应有关的。
##frameworks\js\napi\http\constant\src\constant.cpp
const char *const HttpConstant::RESPONSE_KEY_SET_COOKIE = "set-cookie";
下面我们就梳理下响应头的处理过程。
##frameworks\js\napi\http\http_exec\src\http_exec.cpp
#define NETSTACK_CURL_EASY_SET_OPTION(handle, opt, data, asyncContext) \
do { \
CURLcode result = curl_ea


1万+

被折叠的 条评论
为什么被折叠?



