Spring cloud Zuul查询参数编码

时间:2018-09-13 09:02:39

标签: spring-cloud spring-cloud-netflix

我正在使用Spring cloud zuul代理添加要请求的查询参数。

因此实施了路由过滤器:

@Override
public Object run() {

    RequestContext context = RequestContext.getCurrentContext();
    Map<String, List<String>> newParameterMap = new HashMap<>();
    Map<String, String[]> parameterMap = context.getRequest().getParameterMap();

    // getting the current parameter
    for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
        String key = entry.getKey();
        String[] values = entry.getValue();
        newParameterMap.put(key, Arrays.asList(values));
    }
    // add new parameter grp
    newParameterMap.put("GRP", Arrays.asList(value));
    context.setRequestQueryParams(newParameterMap);
    return null;
}

该请求以iso-8859-1编码传入,但在Zuul中已更改为Utf-8

Example:
in: &ORT_BEZ=Geb%E4ude
out: &ORT_BEZ=Geb%EF%BF%BDude

这导致代理后面的旧版Web应用程序出现问题。

如果我在application.properties中使用选项“ force-original-query-string-encoding = true”,则请求已正确传递,但未添加查询参数。

如何强制zuul保持查询参数编码并添加查询参数?

0 个答案:

没有答案