当前位置: 首页 > 知识库问答 >
问题:

在tomcat中接收请求之前验证头

益明朗
2023-03-14

我需要在收到请求之前验证头。我发现tomcat阀门可以在里面帮忙。我遵循以下步骤,但不调用valve:

>

  • 制作一个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("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    
      getNext().invoke(request, response);  
    

    制作jar并将jar放入Tomcat/lib文件夹中

    在server.xml中添加此行

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

    重新启动Tomcat。

    现在我使用标题点击web服务:

    预期:100-继续

    但使用此配置和代码时,在http HIT时不会调用valve。如果有人知道为什么不调用tomcat valve,请提供帮助。

  • 共有1个答案

    公孙阳羽
    2023-03-14

    server.xml中的标记区分大小写。

    所以试试这个:

    <Valve className="cz.ValveTest.ProcessingValve"/>
    
     类似资料:
    • 如何在处理正文请求之前验证身份验证? 我正在使用vertx: 我想在处理正文请求之前验证身份验证。但我得到了错误的java。lang.IllegalStateException:请求已被读取 使用暂停功能上的延迟复制: 当运行delay(100)时(这是验证过程的示例),我得到了上面的错误。如果我对延迟(100)进行注释,它可以正常工作。

    • 我正在使用基于键斗篷头的身份验证来保护REST API。在那里,我想设置一个请求头字段(基本上是密钥斗篷授权头)之前,编写发生。 另一种解释是:如何获取javax。servlet。在密钥斗篷身份验证之前调用筛选器 在这次尝试中,我尝试调用被覆盖的resolve方法,并对。我可以注意到,它可以在身份验证发生之前调用。我还读取了一些请求头值,但没有setter将请求头设置到那里(to)。 在以这种或那

    • 我有一个设置为接收来自WooCommerce的网络钩子的Rails应用程序。具体来说,我正在寻找创建订单的时间。我已经测试并验证了它在我protect_from_forgery时是否有效,除了创建。现在我正在尝试通过验证网络钩子来保护我的应用程序。WooCommerce的留档声明在请求标头中传递以下秘密: 秘密:一个可选的密钥,用于生成请求正文的HMAC-SHA256哈希,以便接收者可以验证Web

    • 我有一个这样的处理程序和一个自定义注释@validrequest: 注释本身看起来是这样的: 而验证器是这样的: 问题是验证被完全忽略了。我可以发送任何事件有或没有身体和一切工作无一例外。我做的一切都是根据Micronout文档,会有什么问题吗? https://docs.micronaut.io/latest/guide/index.html#BeanValidation

    • 我正在我的本地主机上构建Web应用程序。 前端是Reactjs框架,运行在LocalHost:3000中

    • 问题内容: 我尝试建立一个非常简单的网站,在该网站中可以将数据添加到sqlite3数据库中。我有两个文本输入的POST表单。 index.html: forms.py: views.py: 但是,当我单击“提交”按钮时,出现403错误: 我已经包含{% csrf_token %}在index.html中。但是,如果这是一个RequestContext问题,我真的不知道在哪里以及如何使用它。我希望所