|  |  |  | @ -2,10 +2,10 @@ package com.gitee.sop.gatewaycommon.gateway.filter; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import com.gitee.sop.gatewaycommon.bean.ApiContext; | 
			
		
	
		
			
				
					|  |  |  |  | import com.gitee.sop.gatewaycommon.bean.SopConstants; | 
			
		
	
		
			
				
					|  |  |  |  | import com.gitee.sop.gatewaycommon.gateway.codec.MessageReaderFactory; | 
			
		
	
		
			
				
					|  |  |  |  | import com.gitee.sop.gatewaycommon.result.ResultExecutor; | 
			
		
	
		
			
				
					|  |  |  |  | import org.apache.commons.lang3.StringUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.reactivestreams.Publisher; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.beans.factory.annotation.Value; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.cloud.gateway.filter.GatewayFilterChain; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.cloud.gateway.filter.GlobalFilter; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.cloud.gateway.filter.NettyWriteResponseFilter; | 
			
		
	
	
		
			
				
					|  |  |  | @ -13,16 +13,12 @@ import org.springframework.cloud.gateway.filter.factory.rewrite.CachedBodyOutput | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.cloud.gateway.support.BodyInserterContext; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.cloud.gateway.support.DefaultClientResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.core.Ordered; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.core.codec.AbstractDataBufferDecoder; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.core.codec.Decoder; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.core.io.buffer.DataBuffer; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.HttpHeaders; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.HttpStatus; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.MediaType; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.ResponseCookie; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.client.reactive.ClientHttpResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.codec.DecoderHttpMessageReader; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.codec.HttpMessageReader; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.http.server.reactive.ServerHttpResponseDecorator; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.util.MultiValueMap; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.web.reactive.function.BodyInserter; | 
			
		
	
	
		
			
				
					|  |  |  | @ -40,9 +36,6 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.O | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Value("${spring.codec.max-in-memory-size:262144}") | 
			
		
	
		
			
				
					|  |  |  |  |     private int maxInMemorySize; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     @SuppressWarnings("unchecked") | 
			
		
	
		
			
				
					|  |  |  |  |     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -107,16 +100,7 @@ public class GatewayModifyResponseGatewayFilter implements GlobalFilter, Ordered | 
			
		
	
		
			
				
					|  |  |  |  |     private ExchangeStrategies getExchangeStrategies() { | 
			
		
	
		
			
				
					|  |  |  |  |         ExchangeStrategies exchangeStrategies = ExchangeStrategies.withDefaults(); | 
			
		
	
		
			
				
					|  |  |  |  |         // 修复返回大文本数据报org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144
 | 
			
		
	
		
			
				
					|  |  |  |  |         for (HttpMessageReader<?> messageReader : exchangeStrategies.messageReaders()) { | 
			
		
	
		
			
				
					|  |  |  |  |             if (messageReader instanceof DecoderHttpMessageReader) { | 
			
		
	
		
			
				
					|  |  |  |  |                 DecoderHttpMessageReader reader = (DecoderHttpMessageReader) messageReader; | 
			
		
	
		
			
				
					|  |  |  |  |                 Decoder decoder = reader.getDecoder(); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (decoder instanceof AbstractDataBufferDecoder) { | 
			
		
	
		
			
				
					|  |  |  |  |                     AbstractDataBufferDecoder dataBufferDecoder = (AbstractDataBufferDecoder)decoder; | 
			
		
	
		
			
				
					|  |  |  |  |                     dataBufferDecoder.setMaxInMemorySize(maxInMemorySize); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         MessageReaderFactory.initMaxInMemorySize(exchangeStrategies); | 
			
		
	
		
			
				
					|  |  |  |  |         return exchangeStrategies; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |