Я использую SpringBoot 2.0.3
, spring-cloud-starter-netflix-zuul
и cloud
Finchley.RELEASE
.У меня есть следующий класс, который добавляет headers
:
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
class CorsRequestIdFilter extends OncePerRequestFilter {
private static final String ACCESS_CONTROL_REQUEST_METHOD = "Access-Control-Request-Method";
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
if (isCorsRequest(request) && isPreFlightRequest(request)) {
Set<String> headers = new HashSet<>();
headers.add("Authorization");
headers.add("X");
String requestHeader = request.getHeader("Access-Control-Request-Headers");
if (requestHeader != null) {
headers.addAll(Arrays.asList(requestHeader.split(",")));
}
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.addHeader("Access-Control-Max-Age", "3600");
response.addHeader("Access-Control-Allow-Headers", join(",", headers));
return;
}
filterChain.doFilter(request, response);
}
private boolean isCorsRequest(HttpServletRequest request) {
return (request.getHeader(HttpHeaders.ORIGIN) != null);
}
private boolean isPreFlightRequest(HttpServletRequest request) {
return (isCorsRequest(request) && request.getMethod().equals(HttpMethod.OPTIONS.name()) &&
request.getHeader(ACCESS_CONTROL_REQUEST_METHOD) != null);
}
}
Netflix-стартер дает мне spring-cloud-netflix-zuul
в версии 2.0.0
.Я нашел эту проблему https://github.com/spring-cloud/spring-cloud-netflix/issues/3033
У меня есть похожая проблема, чтобы быть точной, только эта часть соответствует:
com.netflix.zuul.exception.ZuulException: Filter threw Exception
(...)
Caused by: java.lang.ClassCastException: org.apache.http.conn.HttpHostConnectException cannot be cast to com.netflix.zuul.exception.ZuulException
at org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter.findZuulException(SendErrorFilter.java:104)
at org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter.run(SendErrorFilter.java:73)
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:117)
at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:193)
... 107 common frames omitted
, но я понятия не имею, как это помогает мне.Мне интересно, почему возникает эта ошибка и что я могу сделать, чтобы она исчезла?
Я на мгновение изменил версию spring-cloud-starter-netflix-zuul
на 2.0.1
, но это не помогло бы мне вообще.