1

有没有什么简单的方法可以根据浏览器返回不同的内容类型?

当涉及到 application/json 时,我正在用 IE 碰壁。大多数时候它有效,其他时候则无效。我想始终返回 json 对象(通过 MappingJacksonHttpMessageConverter),但在使用 IE 时将内容类型设置为 text/plain。

写入 response.setContentType 无效,因为我有很多控制器,并且扩展转换器也无济于事,因为我没有请求标头..

有任何想法吗?

4

1 回答 1

2

您可以尝试User-agent通过使用从 HTTP 请求中获取标头@RequestHeader("User-Agent"),然后将内容类型HttpServletResponse设置为由 Spring 框架自动设置的对象。这是示例

@Controller
public class FoobarController {

    @RequestMapping("/path")
    @ResponseBody
    public String getContent(@RequestHeader("User-Agent") String userAgent,
                             HttpServletResponse response) {
        if (isIE(userAgent)) {
            response.setContentType("text/plain");
        } else {
            response.setContentType("text/json");
        }
        ...
        return "{\"key\":\"value\"}";
    }
}

这是 IE 的 User-Agent 标头的一部分,

  • Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0;Trident/4.0)
  • Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.0;Trident/4.0)
  • Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;Trident/5.0)

你可以点击这里查看更多。

于 2013-07-10T10:12:59.140 回答