Barra codificada (% 2F) con la ruta Spring RequestMapping param da HTTP 400

Esto no es un duplicadopregunta referenciada, porque es primavera específica. Quien haya agregado eso (¡3 años después del hecho!) No se molestó en leer la pregunta o el hilo de comentarios para ver cuál era la respuesta real. La respuesta aceptada no es exactamente la respuesta, pero el autor de la respuesta nunca regresó y la editó como pedí.

Dado el método de descanso a continuación, Spring 3.1 da un error 400 con "La solicitud enviada por el cliente fue sintácticamente incorrecta ()". cuando eltoken el parámetro contiene una barra inclinada de URL (% 2F), por ejemplo "https://somewhere.com/ws/stuff/lookup/resourceId/287559/token/R4o6lI%2FbBx43/userName/jim"Sin el% 2F, todo funciona bien. Un tercero ya está llamando a este servicio (¡por supuesto!), Así que no puedo cambiar lo que envían, al menos a corto plazo. Cualquier idea sobre cómo solucionar esto en el servidor ¿lado?

Este problema se describe muy bien aquí.https://jira.springsource.org/browse/SPR-8662 aunque ese problema está relacionado con UriTemplate, que no estoy usando, puedo decirlo.

@RequestMapping("/ws/stuff/**")
@Controller
public class StuffController {
  @RequestMapping(value = "/ws/stuff/lookup/resourceId/{resourceId}/token/{token}/userName/{userName}", method = RequestMethod.GET)
   public @ResponseBody
   String provisionResource(@PathVariable("resourceId") String resourceId, @PathVariable("token") String token, @PathVariable("userName") String userName, ModelMap modelMap,
         HttpServletRequest request, HttpServletResponse response) {
      return handle(resourceId, userName, request, token, modelMap);
   }
}

Nota: Esto está en Glassfish 3.1.2, y al principio era Grizzly / Glassfish que no aceptaba la barra, pero

-Dcom.sun.grizzly.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

arreglado eso

asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.http.encoded-slash-enabled=true

no parecía ayudar

Respuestas a la pregunta(6)

Su respuesta a la pregunta