这种问题使用form表单,即请求参数不在body的情况下会出现
方法就是,gateway中转发之前对请求参数进行一次编码在进行转发,因为request.getParamter获取参数会进行自动解码。所以转发过去以后获取到的参数还是原来的参数,不用再进行解码。
由于gateway对请求参数校验严格,凡是encode的参数中不允许出现= & 等字符 所以重写gateway转发过滤器
代码:
import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR;
import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_SCHEME_PREFIX_ATTR;
import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.containsEncodedParts;
import java.io.UnsupportedEncodingException;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;
import org