SpringCloudGateway 遇到Set-Cookie是如何处理的, 具体代码是什么
时间: 2024-02-22 17:57:12 浏览: 166
在 Spring Cloud Gateway 中,Set-Cookie 的处理逻辑主要在 `org.springframework.cloud.gateway.filter.factory.AddResponseHeaderGatewayFilterFactory` 这个类中实现。该类是一个 GatewayFilterFactory,用于添加响应头信息。
具体来说,当 Set-Cookie 字段存在于响应头中时,`AddResponseHeaderGatewayFilterFactory` 会将其提取出来,并将其添加到响应头中。以下是 `AddResponseHeaderGatewayFilterFactory` 类的主要处理逻辑:
```java
public class AddResponseHeaderGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory {
@Override
public GatewayFilter apply(NameValueConfig config) {
return (exchange, chain) -> {
return chain.filter(exchange).then(Mono.fromRunnable(() -> {
String value = resolveValue(config.getValue(), exchange);
if (StringUtils.hasText(value)) {
exchange.getResponse().getHeaders().add(config.getName(), value);
}
}));
};
}
}
```
在上述代码中,`exchange.getResponse().getHeaders()` 可以获取到响应头信息。当响应头中存在 Set-Cookie 字段时,`exchange.getResponse().getHeaders().add(config.getName(), value)` 会将 Set-Cookie 字段添加到响应头中。
需要注意的是,这里的 `config.getName()` 返回的是 Set-Cookie,而 `resolveValue(config.getValue(), exchange)` 返回的是 Set-Cookie 字段中的 Cookie 信息。具体的 Cookie 处理逻辑由后续的请求处理器负责。
阅读全文