【发布时间】:2017-04-14 19:24:46
【问题描述】:
我正在向我的 REST api 发送以下请求: http://localhost:8080/accid234/accounts;email=testme@test.com/departmentUse
Rest-api Java 代码:
@Path("/{accounts}")
public Accounts getDeptAccounts(@PathParam("accounts") PathSegment pathSegment) {
Map<String, String> matrixParams = pathSegment.getMatrixParameters();
for (String s: matrixParams.keySet()) {
System.out.println("***Matrix params Key:" + s + "Value:" + matrixParams.get(s));
}
}
当请求直接发送到上述端点时,这可以正常工作。
但是当请求被包装(ForwardedHeaderFilter)时,我无法读取矩阵参数。
我遇到这个问题的原因:
我使用 spring-cloud-netflix-zuul 作为代理路由服务,它在请求中添加了诸如 x-forwarded-host、x-forwarded-proto、x-forwarded-prefix 等代理标头。这与包装请求相同。
我将 Zuul 配置为不添加代理标头,然后 Matrix Parameters 起作用了。但是我想知道是否可以尝试以任何其他方式修复它,因为我不确定如果删除代理标头可能会遇到什么问题。
问题是:如何处理代理请求中的矩阵参数?
我尝试使用矩阵变量而不是 PathSegment,但也没有用。
【问题讨论】:
标签: rest spring-mvc netflix-zuul spring-cloud-netflix