【问题标题】:Access Request Headers in Spring Boot?在 Spring Boot 中访问请求标头?
【发布时间】:2019-12-26 23:23:10
【问题描述】:

我正在使用这个project,特别是这两个类:ApplicationStartup.javaApplication.java

我用谷歌搜索了一下,看起来所有其他示例都使用特定的/endpoint 来获取请求标头,而我只是让我的应用程序在localhost:8080 上运行。但看起来我确实有 /graphql 端点,所以应该可以解析请求的标头。

这是我application.yml的内容:

server:
  port: 8080

spring:
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: false

graphql.playground:
  mapping: /playground
  endpoint: /graphql

【问题讨论】:

    标签: java spring-boot graphql


    【解决方案1】:

    任何 Spring 控制器都可以使用 @RequestHeader 注释(文档 here)访问标头作为方法参数的一部分:

    @Controller
    public class MyController {
        public ResponseEntity<String> schedule(@RequestBody MyDto request,
                                               @RequestHeader HttpHeaders headers)
    {
       ...
    }
    

    如果您无权访问控制器代码,则可以实现 OncePerRequestFilter 并使用 @gnana 的方法访问底层 servlet 请求的标头。

    【讨论】:

      【解决方案2】:

      如果您的问题是获取当前请求标头,那么下面的代码将为您完成。

      HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()) .getRequest();
      
      request.getHeader("Authorization");
      

      【讨论】:

        猜你喜欢
        • 2020-05-23
        • 1970-01-01
        • 2018-02-18
        • 2020-12-29
        • 1970-01-01
        • 2020-06-25
        • 2020-09-29
        • 2018-06-24
        • 1970-01-01
        相关资源
        最近更新 更多