如何使用 HttpServletRequest 在 Java 中捕获请求标头

Edd*_*die 5 java spring servlets

我想在java中捕获一个标头。我写的代码是正确的。尽管如此,它仍然是空的。您能否提出更改建议。我正在拦截器中执行此任务。我在控制器类上是否遗漏了任何注释,或者我需要在控制器类上进行任何配置?

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.jose4j.jwk.HttpsJwks;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.consumer.InvalidJwtException;
import org.jose4j.jwt.consumer.JwtConsumer;
import org.jose4j.jwt.consumer.JwtConsumerBuilder;
import org.jose4j.keys.resolvers.HttpsJwksVerificationKeyResolver;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

@Configuration
@Component
public class TokenValidateInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {

        String apiKey;
        System.out.println("Header  "+request.getHeader("xx"));  //Null
        System.out.println("request  "+request);  // request  org.apache.catalina.core.ApplicationHttpRequest@4df9ffc7
        System.out.println("request.tostring  "+request.toString()); // request.tostring  org.apache.catalina.core.ApplicationHttpRequest@e0770ef
Run Code Online (Sandbox Code Playgroud)

我正在使用 POSTMAN 传递标头

Luc*_*ens 2

请求中可能不存在“xx”标头。

代替

System.out.println("Header  "+request.getHeader("xx"));
Run Code Online (Sandbox Code Playgroud)

Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
    System.out.println("Header  " + headerNames.nextElement());
}
Run Code Online (Sandbox Code Playgroud)

查看服务器从客户端接收到的所有标头。