apache httpClient关于cookie解析的报错处理

news2024/11/14 16:27:34

报错信息:o.a.h.c.p.ResponseProcessCookies - Invalid cookie header: "Set-Cookie: account="xxxxx"; expires=Fri, 03 Feb 2023 06:02:40 GMT; httponly; Path=/". Invalid 'expires' attribute: Fri, 03 Feb 2023 06:02:40 GMT

httpClient版本:4.5.13

报错解析:

通过上面的报错信息,我们可以知道最后问题是出现在cookie的expires属性上,这个属性是代表着cookie存活时间,说的是这个字段属性无效。但在postman中,能正常的请求和保存cookie,那么问题肯定出现在解析代码中。

源码分析:

通过报错的类`ResponseProcessCookies`,直接打开源码找到打印报错日志的地方

从以上图片可以看出,发生错误的地方应该时在try里面,既然日志提示了是cookie构造失败,那么很明显应该就是cookieSpec.parse方法去构建cookie报错的

然而CookieSpec只是个接口,有多个实现,哪个出现的问题的,在不知道的情况下直接DEBUG查询,得知使用的是DefaultCookieSpec

一路DEBUG下去

到这里,区分是使用什么cookie属性处理器了,我们既然知道了expires属性有问题,直接进入BasicExpiresHandler

到这里很明显了,是关于cookie到期时间的格式有问题,请求中的格式`Fri, 03 Feb 2023 06:02:40 GMT` 即 EEE, dd MMM yy HH:mm:ss z,httpClient中解析的格式为`EEE, dd-MMM-yy HH:mm:ss z`,因请求中cookie到期时间的格式与解析的不符合导致的

找到的解决方案:

目前在网上看到两种

方案一:http://www.fullstackyang.com/httpclienthuo-qu-cookieji-chang-jian-cuo-wu-de-jie-jue-fang-fa/

方案二:https://blog.csdn.net/qq_32483145/article/details/88080453

方案一是自己手动写死处理到期时间的逻辑,个人觉得写法不太优雅

方案二则优雅一点修改解析格式(实际上方案二是写这篇博客时才看到的),但感觉拓展性不强

最终解决方案:

因为不是很喜欢上面两种方案,最终自己写了一个

直接自定义个MyDefaultCookieSpec去继承默认的DefaultCookieSpecProvider,所有实现全部使用父类的,就是在构造方法里加入自定义扩展的解析时间格式类型,这样有利于后续拓展

(自我感觉良好o.O)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4年翻4倍年薪30W+的测试工程师个人成长之路

欢迎同行来交流,wx 群二维码应该过不了审核,私聊要把。税收图保证真实性。 一、何为测试 简单做一下科普。测试简而言之就是应用上线前,验证应用是否存在bug,是否满足产品的需求。大家津津乐道的程序员,也就是开发&am…

stm32 的 ESP8266 wifi 模块 (ESP - 12s) 的使用

1. ESP8266 的器件介绍 2. ESP2866外设 的引脚 3. 我所用的的ESP2866 的引脚图 4. 代码 编程的串口 5.wifi 的指令 1. AT 测试指令 2. ATRST 重启模块 3. ATGMR 查看版本信息 4. ATRESTORE 恢复出厂设置 5. ATUART115200,8,1,0,0 串口设置 串口号&#xff…

【SpringBoot应用篇】SpringBoot 业务代码中常用技巧

【SpringBoot应用篇】SpringBoot 业务代码中常用技巧自定义拦截器自定义过滤器过滤器和拦截器的区别获取Spring容器对象BeanFactoryAware接口ApplicationContextAware接口ApplicationListener接口全局异常处理类型转换器参数解析器Import导入配置普通类配置类ImportSelectorImp…

异地旁路组网:zerotier

有这么一个需求:需要远程访问内网的nas。然后现成的解决方案有蒲公英这个方案,但是个人版的话限了只能3个设备,因此找了半天,最后选择了功能类似的zerotier. 创建网络 zerotier的使用很简单,首先去官网http://zeroti…

vue 时间栏选择

效果图&#xff1a; 用el-carousel 的轮播组件 将样式修改 添加change事件 区分左右点击 获取当前年 和 当前月 <el-carouseltrigger"click"height"36px":autoplay"false"arrow"always"change"carouselChange"><e…

Leetcode.189 轮转数组

题目链接 Leetcode.189 轮转数组 题目描述 给你一个数组&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5…

数据分析师最佳选择,帆软自研函数计算满足BI复杂场景需求

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业伴随着数字经济的加快推进和企业数字化转型的不断深入&#xff0c;数据时代正在朝我们走来。越来越多的企业管理者已经意识到数据的重要性&#xff0c;数据分析和商业智能也成为管理决策的重要辅助工具&#xff0c;由此而生…

几个潜在的AI科研助手

最近看到一个新闻说ChatGPT被某科研文章列为作者之一。以自然语言处理和深度学习为基础的人工智能在语言修改润色和翻译方面表现优异&#xff0c;似乎还将改变一些传统的论文阅读和写作方式。本文记录几个最近了解到的几个工具。Scispace地址&#xff1a;https://typeset.io/搜…

详细解析各种TCP漏洞攻击方式及防御方法

TCP/IP攻击是利用IP地址并不是出厂的时候与MAC固定在一起的&#xff0c;攻击者通过自封包和修改网络节点的IP地址&#xff0c;冒充某个可信节点的IP地址&#xff0c;进行攻击。 由于TCP/IP协议是Internet的基础协议&#xff0c;所以对TCP/IP协议的完善和改进是非常必要的。TCP…

Redis 异地双活实战

本文主要讲述异地双活方案redis的热备、双写、双向同步的区别和优劣势。并且说明了双写同步方案中redis集群主从数据同步的过程&#xff0c;以及中间件方案遇到的部分问题点&#xff0c;说明最终方案的实现思路和方案。 redis的双活方案无非有以下三种&#xff1a;热备&#xf…

是否只能搞底层才能成为技术大神?

hi&#xff0c;大家好&#xff0c;我是大师兄alex&#xff0c;想必大家经常听到&#xff0c;想要长远发展&#xff0c;必须要往底层走&#xff0c;技术大神都是搞底层的&#xff0c;你会看到很多人一旦想变得硬核&#xff0c;都喜欢展现自己搞过一些底层技术&#xff0c;比如体…

配置热更新/支持 Reload、QUIC 桥接再升级

12 月&#xff0c;NanoMQ 继续保持稳步更新&#xff0c;最新的 0.15 版本将于本月初发布。这一版本增加了配置热更新功能和 Reload 命令&#xff1b;MQTT over QUIC 桥接再次得到升级&#xff0c;增加了拥塞控制和 QoS 消息优先传输&#xff1b;另外也为上一个版本新增的 HOCON…

2003-2021年高铁线路信息数据

2003-2021年高铁线路信息数据 1、时间&#xff1a;2003-2021年 2、指标&#xff1a; 高铁线路名称、起点名、终点名、开通时间、线路长度(km)、设计速度(km/h&#xff09;、沿途主要车站 3、指标说明&#xff1a; 高铁一般指高速铁路。 高速铁路&#xff0c;简称高铁&…

基于 K8s 的 MySQL 数据持久化存储

目录一、步骤二、实践2.1 创建 PV 和 PVC2.2 部署 MySQL 服务2.3 创建测试数据2.4 模拟节点宕机2.5 数据一致性验证FAQ一、步骤 &#xff08;1&#xff09;创建 PV 和 PVC。 &#xff08;2&#xff09;部署 MySQL 服务。 &#xff08;3&#xff09;向 MySQL 添加数据。 &am…

什么是Vue、Vue开发的方式、Vue的基本指令

一、什么是Vue 1. 前端技术的发展&#xff08;html、CSS、JavaScript&#xff09; ​ &#xff08;1&#xff09;jQuery&#xff1a;是对JavaScript进行了封装&#xff0c;使得操作DOM、事件处理、动画处理、ajax交互变得非常简洁、方便。是JavaScript的库。 ​ &#xff08…

贴吧低代码高性能规则引擎设计

作者 | 贴吧UEG技术组 导读 本文首先介绍了规则引擎的使用场景&#xff0c;引出贴吧规则引擎。从组件、变量、规则、处置四个模块介绍了规则引擎的组成部分&#xff0c;同时对最终规则文件的编译过程做了详细介绍。为了做到低代码&#xff0c;在规则配置上做到平台化&#xff0…

2022第十一届中国创新创业大赛全国总决赛在深圳举办

为深入贯彻党的二十大精神和创新驱动发展战略&#xff0c;强化企业科技创新主体地位&#xff0c;支持企业融合创新&#xff0c;推进科技型创新型企业遴选和培育&#xff0c;加大金融对硬科技企业的支持力度&#xff0c;营造有利于科技型中小微企业成长的环境&#xff0c;推动创…

Nuxt.js

Nust.js介绍 Nust.js介绍 移动互联网的兴起促进了web前后端分离开发模式的发展&#xff0c;服务端只专注业务&#xff0c;前端只专注用户体验&#xff0c;前端大量运用的前端渲染技术&#xff0c;比如流行的vue.js、react框架都实现了功能强大的前端渲染。但是&#xff0c;对…

深入探索Linux虚拟化KVM-Qemu分析之CPU虚拟化

说明&#xff1a; KVM版本&#xff1a;5.9.1QEMU版本&#xff1a;5.0.0工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 本文围绕ARMv8 CPU的虚拟化展开&#xff1b;本文会结合Qemu KVM的代码分析&#xff0c;捋清楚上层到底层的脉络&#xff1b;本文会提供一…

MYSQL对千万级数据的快速迁移

MYSQL对千万级数据&#xff08;10个G左右&#xff09;的迁移&#xff0c;耗时控制在半小时内 1.show variables like %secure%;查看 secure-file-priv 当前的值是什么 2.如果没有可以在my.ini&#xff08;windows&#xff09;my.cnf&#xff08;linux&#xff09;中添加secure…