前端SameSiteCookie问题排查分享

简介: 近期排查客户上报的问题时,遇到了一个比较费解的问题,在这边梳理一下排查的流程、遇到的难点、找到的一些相关资料,来对整一个问题进行一个总结,也借此机会做一个分享SameSiteCookie相关的疑难问题处理

前言

      近期排查客户上报的问题时,遇到了一个比较费解的问题,在这边梳理一下排查的流程、遇到的难点、找到的一些相关资料,来对整一个问题进行一个总结,也借此机会做一个分享

问题现象

      客户这边反馈在mpaas近期升级后,有发现在低版本的android手机上无法正常打开某链接,会出现打开后直接跳转错误页面的问题,而在高版本的android上现象正常。

排查思路

1.复现

在收到这类需求后,笔者这边首先依据客户的描述,尝试在最新基线68.33下进行复现,避免出现系已解决的bug导致的问题。

测试结果与用户反馈一致,android7下可以看到跳转进入错误页面(显示报错500),在android10下则无该现象。

2.细化测试用例

由于出现现象的场景为nebula容器,一般涉及该现象的有两点,UC内核和Nebula容器本身,因而我们采用以下几个场景进行测试:

1.使用nebula容器,uc内核,android7下可以看到跳转进入错误页面,在android10下则无该现象。

2.使用nebula容器,系统内核,android7和android10下都可以正常使用。

该场景可以通过移除ucKey或者使用param.putString(H5Param.USE_SYS_WEBVIEW,"YES")

3.使用系统原生webview容器,不涉及nebula容器,android7和android10下都可以正常使用。

通过排除变量法,我们这边可以初步确认系uc内核的原因。

3.对比具体差异

在初步确认系uc问题后,我们先判断相关的访问链路,使用inspect/chales等工具,可以协助我们拿取到完整的访问请求报文,以对比成功/失败时的差异。

笔者此次使用的是Inspect方案。

(图1)

首先,我们查看一下链接失败的情况 可以看到系某个登陆接口报错,确实报了500。

然后我们尝试使用Android10的设备打开这个报错的url,却发现在该机型下,code码返回的是200。

(图2)

对比图1和图2,我们可以初步把问题的原因归结到的可能是该响应的报错导致的这个现象,而与响应直接相关的就是请求报文,于是我们开始比对两次请求报文之间的具体差异。

(图3)

在图3中,我们可以发现两点差异,即:

1.ua请求不同。

2.cookie使用方式不同。

我们对这两个分别进行验证。

4.验证假设

1.验证UA

基于以往的经验,笔者先验证是否是UA导致的,

我们采用:

MPNebula.setUa(new H5UaProvider() {

@Override

public String getUa(String s) {

Log.d(TAG, "getUa: " + s);

return "";

}

});

将android10下的UA信息直接赋予Android7下,但验证结果发现问题依旧存在。

2.验证Cookie

因确实没有遇到由于是Cookie导致的问题,做到这一步的时候实际是比较懵的,但幸好有百度。

Set-Cookie: SESSION=YWJjYWYyMjQtMGY0NC00YzMyLTgxYjItYzkxNWM1MjAyNzFi; Path=/; HttpOnly; SameSite=Lax

Cookie: SESSION=NWMxMTcwZTgtZjkzMC00ZGE3LWFlMmUtZjg1MjAxNWRlNDIy

两项差异我们可以看到,主要是在成功的选项中出现了SameSite=Lax 这个特殊的参数信息,通过百度:

从Chrome 80版本起,Google将开始「强制」实施一套全新的默认安全的Cookie分类系统,其具体内容包含两点:

1.默认为所有「没有声明」samesite属性的Cookie加上SameSite=Lax;

2.如果声明了SameSite=None,必须同时带上Secure属性,才允许在「跨站」上下文中被访问;

此举将从源头上有效遏制跨站点请求伪造(CSRF)攻击,使得用户的隐私和安全得到更好的保障,Web生态更加健康

因而极有可能是由于UC默认在低版本没有完成这一块的适配导致的。

5.解决

在这里,我们首先给出结论,通过查阅文档,确认UC提供的方案为:

UCSettings.setGlobalBoolValue(SettingKeys.EnableSameSiteCookieDegradation, true);

我们在应用初始化后加入如上配置,再次验证问题,问题解决。

目录
相关文章
|
缓存 网络协议 前端开发
业务前端界面报错504排查思路和解决办法
业务前端界面报错504排查思路和解决办法
业务前端界面报错504排查思路和解决办法
|
Web App开发 运维 前端开发
【分享】前端线上紧急排查工具
【分享】前端线上紧急排查工具
361 0
【分享】前端线上紧急排查工具
|
1月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
127 2
|
1月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
1月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
1月前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
|
2月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
3月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
40 0