泽西@matrixparam并在请求中逃脱了分号

时间:2014-07-22 08:27:30

标签: java jersey jax-rs

使用Jersey 1.8我有以下请求:

@DELETE
@Path("{itemids: [A-Fa-f0-9]+}")
public void deleteInstance(@PathParam("itemids") final PathSegment itemIdsPath) {
  ....
}

如果我发送路径为/delete/1;2;3的http请求,那么它可以正常工作。但是,如果分号被转义,那么路径看起来像/delete/1%3B2%3B3,那么Jersey返回404错误。泽西岛应该拒绝这些后面的请求,还是应该在匹配矩阵参数之前解码路径?

1 个答案:

答案 0 :(得分:2)

它应该拒绝它们。 URL编码用于明确的原因,使用具有特殊含义的字符而没有这个含义。例如,您可以发送请求/delete/1;2;3%3B4,这意味着包含细分123;4的路径(如果这些是有效名称)。但是,由于您为每个段指定了[A-Fa-f0-9]+的路径名称模式,因此拒绝对编码名称1;2;3的请求,并返回404。