代码如下:

server:
  port: 8083
spring:
  application:
    name: gateway-service
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:
        - id: exp-service
          uri: lb://exp-service
          predicates:
            - Path=/study-exp/**,/study-Mq/**
        - id: one-service
          uri: lb://one-service
          predicates:
            - Path=/one/**,/two/**
          filters:
            - AddRequestHeader=one, 你太帅了
    @GetMapping("/testAddReqHeader")
    public ReturnMessage testAddReqHeader(@RequestHeader(value = "one",required = false) String oneKey){
        return ReturnMessageBuilder.ok("one="+oneKey);
    }

报错如下

2023-10-18 12:01:26.211 ERROR 22876 --- [ctor-http-nio-2] a.w.r.e.AbstractErrorWebExceptionHandler : [e2cae4cd-1]  500 Server Error for HTTP GET "/one/test"

java.lang.IllegalArgumentException: Validation failed for header 'one'
	at io.netty.handler.codec.DefaultHeaders.validateValue(DefaultHeaders.java:1019) ~[netty-codec-4.1.97.Final.jar:4.1.97.Final]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ HTTP GET "/one/test" [ExceptionHandlingWebHandler]

解决,请求头改成英文就行了。

          filters:
            - AddRequestHeader=one, your are handsome!

在这里插入图片描述

如果确实要添加中文请求头怎么办呢?

参考文章:https://blog.csdn.net/Loser_you/article/details/115467549

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐