gpt4 book ai didi

java - spring mvc - @ResponseBody 并基于浏览器生成?

转载 作者:行者123 更新时间:2023-11-30 04:19:06 25 4
gpt4 key购买 nike

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

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

写入response.setContentType并不有效,因为我有很多 Controller ,并且扩展转换器也没有多大帮助,因为我没有请求 header ..

有什么想法吗?

最佳答案

您可以尝试使用 @RequestHeader("User-Agent") 从 HTTP 请求中获取 User-agent header ,然后将内容类型设置为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 header 的一部分,

  • 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)

您可以点击here查看更多。

关于java - spring mvc - @ResponseBody 并基于浏览器生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17566148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com