【问题标题】:Jetty Proxy Servlet : Handle RedirectionJetty Proxy Servlet:处理重定向
【发布时间】:2015-10-30 08:09:23
【问题描述】:

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

【问题讨论】:

    标签: proxy jetty embedded-jetty http-proxy


    【解决方案1】:

    您可以覆盖ProxyServlet 中允许您重写标题的方法。因此,例如,您可以查看是否有 Location 标头,如果有,则删除目标 URL 并将其替换为客户端请求的 URL。我就是这样做的:

    @Override
    protected String filterServerResponseHeader(HttpServletRequest clientRequest, Response serverResponse, String headerName, String headerValue) {
        if (headerName.equalsIgnoreCase("location")) {
            URI targetUri = serverResponse.getRequest().getURI();
            String toReplace = targetUri.getScheme() + "://" + targetUri.getAuthority();
            if (headerValue.startsWith(toReplace)) {
                headerValue = clientRequest.getScheme() + "://" + clientRequest.getHeader("host")
                    + headerValue.substring(toReplace.length());
                log.info("Rewrote location header to " + headerValue);
                return headerValue;
            }
        }
        return super.filterServerResponseHeader(clientRequest, serverResponse, headerName, headerValue);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-27
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      相关资源
      最近更新 更多