【问题标题】:Access Request Headers in Spring Boot?在 Spring Boot 中访问请求标头?
【发布时间】:2019-12-26 23:23:10
【问题描述】:
我正在使用这个project,特别是这两个类:ApplicationStartup.java 和Application.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");