有没有什么简单的方法可以根据浏览器返回不同的内容类型?
当涉及到 application/json 时,我正在用 IE 碰壁。大多数时候它有效,其他时候则无效。我想始终返回 json 对象(通过 MappingJacksonHttpMessageConverter),但在使用 IE 时将内容类型设置为 text/plain。
写入 response.setContentType 无效,因为我有很多控制器,并且扩展转换器也无济于事,因为我没有请求标头..
有任何想法吗?
有没有什么简单的方法可以根据浏览器返回不同的内容类型?
当涉及到 application/json 时,我正在用 IE 碰壁。大多数时候它有效,其他时候则无效。我想始终返回 json 对象(通过 MappingJacksonHttpMessageConverter),但在使用 IE 时将内容类型设置为 text/plain。
写入 response.setContentType 无效,因为我有很多控制器,并且扩展转换器也无济于事,因为我没有请求标头..
有任何想法吗?
您可以尝试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 标头的一部分,
你可以点击这里查看更多。