java - 在 tomcat 中接收请求之前验证 header

标签 java web-services tomcat http-headers

我需要在收到请求之前验证 header 。我发现 tomcat 阀门可以提供帮助。我按照以下步骤操作,但未调用 valve:

  1. 创建一个 maven 项目并在其中执行此代码。

    package cz.ValveTest;
    
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.catalina.connector.Request;
    import org.apache.catalina.connector.Response;
    import org.apache.catalina.valves.ValveBase;
    
    public class ProcessingValve  extends ValveBase {
    
    private static final Logger logger = Logger.getLogger(ProcessingValve.class.getName());
    
    @Override
    public void invoke(Request request, Response response) throws IOException,
            ServletException {
    
    
    HttpServletRequest httpServletRequest = request.getRequest();
    
     Enumeration<String> headerNames = httpServletRequest.getHeaderNames();
     logger.info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    
    while (headerNames.hasMoreElements()) { String header = headerNames.nextElement(); logger.log(Level.INFO, "Header --> {0} Value --> {1}", new Object[]{header, httpServletRequest.getHeader(header)}); }
      getNext().invoke(request, response);  
    
    } }
  2. 制作jar并将jar放入tomcat/lib文件夹

  3. 在 server.xml 中添加这一行

    <valve className="cz.ValveTest.ProcessingValve"/>
    
  4. 重启tomcat。

  5. 现在我用 header 访问我的网络服务:

    Expect : 100-continue

但是使用此配置和代码阀不会在 http 命中时调用。如果有人知道为什么不调用 tomcat 阀,请帮忙。

最佳答案

server.xml 中的标签区分大小写

那么试试这个:

<Valve className="cz.ValveTest.ProcessingValve"/>

关于java - 在 tomcat 中接收请求之前验证 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34236820/

相关文章:

java - Prolog - 访问控制?

java - 缺少 Spring Security 类

c# - CXF Web 服务的 .NET 客户端身份验证和 SOAP 凭据 header

java - PKIX 证书路径错误 : ok with java, 不适用于 Tomcat

tomcat - 如何摆脱 tomcat-users.xml 权限被拒绝的错误

java - runtime.getruntime().exec ("wscript.exe macro.vbs") 在 Windows Server 2008 上不起作用

java - 无法在java中创建文件路径

java - Wildfly 10 java.lang.ClassNotFoundException

java - 将 WebEnv 和 QueryKey 示例用于 EFetch 时出现 ADBException

java - 无法检索 Android 中 Web 方法的响应