Proxy Jetty代理Servlet:句柄重定向

Proxy Jetty代理Servlet:句柄重定向,proxy,jetty,embedded-jetty,http-proxy,Proxy,Jetty,Embedded Jetty,Http Proxy,如果来自服务器的响应是重定向,即带有位置头的302状态,Jetty的ProxyServlet将不处理该响应,控件将重定向到原始服务器。我如何解决这个问题?另外,如何更改响应和响应标题?您可以重写ProxyServlet中的方法,该方法允许您重写标题。例如,您可以查看是否存在位置头,如果存在,请删除目标URL并用客户端请求的URL替换它。我就是这样做的: @覆盖 受保护的字符串筛选器服务器响应标头(HttpServletRequest clientRequest、响应服务器响应、字符串标题名称、字

如果来自服务器的响应是重定向,即带有位置头的302状态,Jetty的ProxyServlet将不处理该响应,控件将重定向到原始服务器。我如何解决这个问题?另外,如何更改响应和响应标题?

您可以重写
ProxyServlet
中的方法,该方法允许您重写标题。例如,您可以查看是否存在
位置
头,如果存在,请删除目标URL并用客户端请求的URL替换它。我就是这样做的:

@覆盖
受保护的字符串筛选器服务器响应标头(HttpServletRequest clientRequest、响应服务器响应、字符串标题名称、字符串标题值){
if(总部名称、同等信号情况(“位置”)){
URI targetUri=serverResponse.getRequest().getURI();
字符串toReplace=targetUri.getScheme()+“:/”+targetUri.getAuthority();
if(headerValue.startsWith(toReplace)){
headerValue=clientRequest.getScheme()+“:/”+clientRequest.getHeader(“主机”)
+headerValue.substring(toReplace.length());
log.info(“将位置标题重写为“+headerValue”);
返回headerValue;
}
}
返回super.filterServerResponseHeader(clientRequest、serverResponse、headerName、headerValue);
}

您可以重写
ProxyServlet
中允许您重写头的方法。例如,您可以查看是否存在
位置
头,如果存在,请删除目标URL并用客户端请求的URL替换它。我就是这样做的:

@覆盖
受保护的字符串筛选器服务器响应标头(HttpServletRequest clientRequest、响应服务器响应、字符串标题名称、字符串标题值){
if(总部名称、同等信号情况(“位置”)){
URI targetUri=serverResponse.getRequest().getURI();
字符串toReplace=targetUri.getScheme()+“:/”+targetUri.getAuthority();
if(headerValue.startsWith(toReplace)){
headerValue=clientRequest.getScheme()+“:/”+clientRequest.getHeader(“主机”)
+headerValue.substring(toReplace.length());
log.info(“将位置标题重写为“+headerValue”);
返回headerValue;
}
}
返回super.filterServerResponseHeader(clientRequest、serverResponse、headerName、headerValue);
}