restTemplate Invalid ‘expires‘ attribute: Sat, 18 Apr 2054 02:50:25 GMT、

服务器后台warning:

分析:

Sat, 18 Apr 2054 02:50:25 GMT、日期解析失败,使用标准的cookie解析方式

解决:

RequestConfig.custom().setConnectionRequestTimeout(connectRequestTimeout) .setConnectTimeout(connectTimeout).setSocketTimeout(socketTimeout) .setCookieSpec(CookieSpecs.STANDARD).build();

java 复制代码
	@Bean
	public RestTemplate restTemplate(@Autowired CloseableHttpClient closeableHttpClient) {
		return new RestTemplate(new HttpComponentsClientHttpRequestFactory(closeableHttpClient));
	}
	
@Bean
	public CloseableHttpClient closeableHttpClient() {
		return builder(connectTimeout, connectRequestTimeout, readTimeout);
	}

	private CloseableHttpClient builder(int connectTimeout, int connectRequestTimeout, int socketTimeout) {
		RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(connectRequestTimeout)
				.setConnectTimeout(connectTimeout).setSocketTimeout(socketTimeout)
				.setCookieSpec(CookieSpecs.STANDARD).build();

		return HttpClients.custom().setConnectionManager(get()).setDefaultRequestConfig(requestConfig)
				.setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy() {
					@Override
					public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
						long time = super.getKeepAliveDuration(response, context);
						if (time >= 0) {
							return time;
						}
						return keepAliveTime;
					}
				}).build();
	}

	private PoolingHttpClientConnectionManager get() {
		if (gcm != null) {
			return gcm;
		}
		synchronized (RestConfig.class) {
			Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
					.register("http", PlainConnectionSocketFactory.getSocketFactory())
					.register("https", SSLConnectionSocketFactory.getSocketFactory()).build();
			PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager(registry);
			manager.setMaxTotal(maxTotal);
			manager.setDefaultMaxPerRoute(maxPerRoute);
			idleThread = new IdleConnectionMonitorThread(manager);
			idleThread.start();
			Runtime.getRuntime().addShutdownHook(new Thread() {
				@Override
				public void run() {
					idleThread.shutdown();
				}
			});

			gcm = manager;
		}
		return gcm;
	}

	// 监控有异常的链接
	private class IdleConnectionMonitorThread extends Thread {
		private final HttpClientConnectionManager connMgr;
		private volatile boolean exitFlag = false;

		public IdleConnectionMonitorThread(HttpClientConnectionManager connMgr) {
			this.connMgr = connMgr;
			setDaemon(true);
		}

		@Override
		public void run() {
			while (!exitFlag) {
				synchronized (this) {
					try {
						wait(2000);
					} catch (InterruptedException e) {
						Thread.currentThread().interrupt();
					}
				}
				// 关闭失效的连接
				connMgr.closeExpiredConnections();
				// 可选的, 关闭指定时间内不活动的连接
				connMgr.closeIdleConnections(30, TimeUnit.SECONDS);
			}
		}

		public void shutdown() {
			exitFlag = true;
		}
	}
复制代码

参考:

Spring Boot 无效的cookie标头:无效的"expires"属性 _大数据知识库

Invalid cookie header: "Set-Cookie: xxx", HttpOnly". Invalid 'expires' attribute报错说明-CSDN博客

HttpClient4 警告: Invalid cookie header 的问题解决_org.apache.http.client.protocol.responseprocesscoo-CSDN博客

相关推荐
逍遥德1 分钟前
AI时代,计算机专业大学生学习指南
java·javascript·人工智能·学习·ai编程
Maiko Star19 分钟前
让 AI 开口说话:Spring AI Alibaba 语音合成(TTS)实战
java·人工智能·spring·springai
programhelp_27 分钟前
Pinterest OA 题库大公开|Programhelp 独家整理(最新高频)
java·开发语言
likerhood1 小时前
Fastjson中的JSON.parseObject()详细讲解
java·json
KNeeg_1 小时前
黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐
java·redis·后端·spring·面试·职场和发展·黑马点评
铁皮哥2 小时前
【后端/Agent 开发】给你的项目配置一套 .claude/ 工作流:别再裸用 Claude Code 了!
java·windows·python·spring·github·maven·生活
乐之者v2 小时前
AI编程 -- codex添加代码,在intellij Idea中没有显示,如何处理?
java·ide·intellij-idea
2401_878820472 小时前
Sa-Token基础篇
java·spring boot·后端·sa-token
2301_816374332 小时前
Nginx下构建PC站点
java·运维·nginx
无所事事O_o3 小时前
JAVA应用不定时卡顿问题排查过程记录
java·优化