我有一个类可以检查 REST 接口(interface)的健康状态。它工作得很好,但我的日志文件充满了这些警告:
2017-08-23 03:59:58.707 WARN 1849 --- [io-13811-exec-5] o.a.h.c.protocol.ResponseProcessCookies : Cookie rejected [JSESSIONID="14747303A2F23D4BE6DBAE0F282DEA94", version:0, domain:dealersearch.....com, path:/DCRMBroker/, expiry:null] Illegal 'path' attribute "/DCRMBroker/". Path of origin: "/system/healthcheck.jsp"
请求似乎不接受任何 cookie。我不明白发生了什么以及如何接受它们来绕过大量日志消息。
我的健康检查类(class):
package com......commons.health;
import com.....commons.health.HealthResult.Health;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.web.client.RestOperations;
public abstract class RestHealthCheck extends HealthCheck {
private static final Logger LOGGER = LoggerFactory.getLogger(RestHealthCheck.class);
public RestHealthCheck() {}
public abstract String getUrl();
public abstract RestOperations getRestOperations();
public HealthResult getHealthResult() {
HealthResult result = new HealthResult();
result.setName(this.getName());
result.setHealth(Health.HEALTHY);
result.setMessage((String)null);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
HttpEntity entity = new HttpEntity(headers);
try {
this.getRestOperations().exchange(this.getUrl(), HttpMethod.HEAD, entity, String.class, new Object[0]);
} catch (Exception var5) {
LOGGER.trace("Health check failed", var5);
result.setHealth(Health.UNHEALTHY);
result.setMessage(var5.getMessage());
}
return result;
}
}
最佳答案
请求 URL http://server.example.com/system/healthcheck.jsp
,响应包含为 URL http://server 定义的 cookie。 example.com/DCRMBroker/
.
URL 不同,名副其实的客户端应该拒绝此处发生的导致日志的情况。您提供的信息不足以确定罪魁祸首是谁。可能是 JSP 页面设置了错误的 cookie,也可能是服务器上的转发规则,因此 JSP 页面在内部转发到不同的资源,而不更改响应内的路径。也可能是您的客户端上发生了某种重定向导致了这种效果。
也许我的解释可以帮助您找到原因。如果这是你这边的事情,你可以解决它。如果是对方的问题,您可能会与他们联系以解决问题。或者,您可以检查您的客户端是否可以关闭此特定情况的警告,以便您的日志再次恢复平静。
关于java - RestOperation交换拒绝cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053174/