我目前正致力于一个需要在restful-url方案中使用分号的项目。
你可以想象,我们在解决这个问题时遇到了问题 - 底层的Java HTTPServletRequest打得不好。
有没有办法解决这个问题?
示例restulf-URL:
看起来Spring只在/ service / bob上工作 - MIKE被截断了。
我们尝试过%3B(或%3F之类的东西)并且它不起作用。
提前致谢!
CT
答案 0 :(得分:3)
虽然@Amos M. Carpenter的答案是正确的,但这是关闭此行为所需的配置:
@Configuration
@EnableWebMvc
public class WebMvcConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void configurePathMatch(PathMatchConfigurer configurer)
{
configurer.getUrlPathHelper().setRemoveSemicolonContent(false);
}
}
答案 1 :(得分:2)
这是您可以在URI中合法使用的所有分隔符的列表:
! $ & ( ) * , ; = + ' : @ / ?
尝试各自,看看哪些适合你。
显然,春天会抢走你;
。我不确定这是否是一个Servlet的东西,但无论如何,它很糟糕。 Web框架应该允许开发人员构建任何合法的URI。
答案 2 :(得分:1)
似乎这是Spring的故意,但至少它是可配置的。
您需要告诉处理程序映射到setRemoveSemicolonContent(false)
(默认为true
)。有关详细信息,请参阅the Javadoc。
这样做的原因是因为他们显然希望从URI中remove the ;jsessionid=...
suffix。