Spring Cloud Config中自定义HttpClient以解决Bitbucket认证的Cookie警告问题
背景介绍
在使用Spring Cloud Config与Bitbucket(v8.19.1)进行HTTP通信时,开发者可能会遇到一个常见的警告信息。当通过Token进行认证时,虽然功能正常,但每次HTTP连接都会在配置服务日志中看到如下警告:
WARN o.a.h.c.protocol.ResponseProcessCookies: Invalid cookie header: "Set-Cookie: BITBUCKETSESSIONID=XXXX; Max-Age=1209600; Expires=Thu, 09 May 2024 13:45:48 GMT; Path=/; Secure; HttpOnly". Invalid 'expires' attribute: Thu, 09 May 2024 13:45:48 GMT
问题分析
这个警告源于Apache HttpClient对Cookie处理的默认规范问题。当前Spring Cloud Config中使用的HttpClient默认配置可能不兼容Bitbucket服务器返回的Cookie格式,特别是对"expires"属性的解析。
现有解决方案
目前,开发者可以通过实现TransportConfigCallback接口来添加认证头信息:
@Bean
public TransportConfigCallback tokenAuthCallback() {
var headers = Map.of("Authorization", "Bearer " + TOKEN);
return transport -> {
if (transport instanceof TransportHttp transportHttp) {
transportHttp.setAdditionalHeaders(headers);
}
};
}
但这并不能解决Cookie警告问题。要彻底解决这个问题,需要能够自定义HttpClient的配置,特别是设置Cookie规范。
技术实现方案
Spring Cloud Config团队决定采用更灵活的解决方案,而不是简单地添加一个特定属性。他们通过引入HttpClient自定义机制,让开发者能够全面控制HttpClient的配置。
核心思路是允许开发者通过编程方式自定义HttpClientBuilder,例如:
httpClientBuilder.setDefaultRequestConfig(
RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD)
.build()
);
这种方案比仅添加cookieSpec属性更加灵活,因为它允许开发者进行各种HttpClient配置,而不仅限于Cookie处理。
最佳实践建议
- 认证配置:继续使用TransportConfigCallback来设置认证头信息
- HttpClient定制:通过新的扩展点自定义HttpClient配置
- Cookie处理:将Cookie规范设置为STANDARD以兼容Bitbucket的响应
未来展望
这种灵活的HttpClient定制方案不仅解决了当前的Cookie警告问题,还为未来可能出现的其他HTTP相关配置需求提供了扩展空间。开发者可以根据具体需求调整连接超时、代理设置、SSL配置等各种HTTP客户端参数。
总结
Spring Cloud Config通过引入HttpClient定制机制,优雅地解决了与Bitbucket集成时的Cookie警告问题。这种设计体现了框架的扩展性和灵活性,为开发者提供了更强大的集成能力,同时也保持了框架的简洁性。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00