我可以在URL路径中使用顶级域名吗?

时间:2013-09-23 09:46:36

标签: java spring http

我有一个使用Spring 3.2.2的应用程序。我在Tomcat上运行它。

在应用程序中,我有一个返回JSON的控制器。

如果控制器请求映射包含字符串“.com”,“.org”,“.talk”,则会收到HTTP错误406

  

此请求标识的资源只能生成   根据请求具有不可接受的特征的回复   “接受”标题。

示例:

这很好用:

@RequestMapping(method = RequestMethod.GET, value = "/test.test")
    public @ResponseBody Map<String, String> test() {
        Map<String, String> stringMap = new HashMap<String, String>();
        stringMap.put("test", "test");
        return stringMap;
}

这会导致http错误406:

@RequestMapping(method = RequestMethod.GET, value = "/test.talk")
        public @ResponseBody Map<String, String> test() {
            Map<String, String> stringMap = new HashMap<String, String>();
            stringMap.put("test", "test");
            return stringMap;
}

我试过的所有域名都没有重现这个问题。例如,“.net”工作正常。

1 个答案:

答案 0 :(得分:4)

我遇到了与上述相同的问题。我的应用程序在Jetty中工作但在Tomcat中没有。但是,在我的情况下,调用从未到达Spring控制器。

所以,如果你也是这种情况,这可能是一个Tomcat配置问题。 Tomcat在文件 web.xml 中有mime-mappings。删除不需要的 com org 等的映射,406应该消失。

apache-tomcat-7.x / conf / web.xml 文件中删除以下内容:

<mime-mapping>
    <extension>org</extension>
    <mime-type>application/vnd.lotus-organizer</mime-type>
</mime-mapping>

<mime-mapping>
    <extension>com</extension>
    <mime-type>application/x-msdownload</mime-type>
</mime-mapping>.