2

我在一个项目HTTP Status 406中,当我的 URL 是这样的时候得到响应:

http://www.mydomain.com/project/website/reply/google.com

我发现它在 url 以 etc 结尾时抛出 406,当 url 以.com, .inetc 结尾时.do, .co, .coom,它的响应为 HTML 页面但未映射完整的 url

例如:假设我有 2 个网址

  1. http://www.mydomain.com/project/website/reply/google.com

    // 将返回 406

  2. http://www.mydomain.com/project/website/reply/apple.do

    // 将返回 HTML 但.do会被 忽略@PathVariable,因此您只能appleapple.do. 我想要之后的全部价值reply/

正如我所说,我得到了HTTP Status 406(The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.),所以我用谷歌搜索并得到了一些建议,比如Ignoring accept headersand ContentNegotiations,但仍然得到相同的响应。

我在用:

  • Spring MVC 3.2.0.RELEASE(带有 JAVA 配置)
  • 杰克逊版本 2.1.0
  • Thymeleaf 模板引擎 2.1.2.RELEASE

如果您想从我这里得到任何其他信息,请告诉我。

这是我在 JAVA 配置中ContentNegotiatingViewResolver(使用此ref)的代码,但它不起作用:

@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
System.out.println("### configureContentNegotiation is called");
configurer.ignoreAcceptHeader(true).defaultContentType(MediaType.TEXT_HTML);
}

@Bean
public ViewResolver contentNegotiatingViewResolver(
ContentNegotiationManager manager) {
System.out.println("### contentNegotiatingViewResolver is called");
List<ViewResolver> resolvers = new ArrayList<ViewResolver>();      
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());      

// Create the CNVR plugging in the resolvers and the content-negotiation manager
ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
resolver.setViewResolvers(resolvers);
resolver.setContentNegotiationManager(manager);
return resolver;
}

请给我一些建议。

4

0 回答 0