Spring MVC:headers 添加到未返回的 RestController 中
Spring MVC: headers added in a RestController not returned
我有一个简单的 Spring MVC RestController
@RestController
@RequestMapping(value = "/xxx")
public class MyResource {
其中一个端点是 return ZIP 文件,所以我有这个:
@RequestMapping(value = "/xxx", method = RequestMethod.GET)
public void downloadZip(HttpServletResponse response) {
InputStream is = ...
IOUtils.copy(is, response.getOutputStream());
response.setContentType("application/zip");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, attachment; filename=myfile.zip);
response.flushBuffer();
}
以上是为了 return 一个 ZIP 并添加两个额外的 header 以便浏览器知道它是触发下载的东西。
但事实并非如此,当我使用 chrome 网络工具检查响应 header 时, header 与请求到达端点之前完全相同。
content-type 仍然是 application/json 而 content-disposition 甚至不存在。
我有一个名为 "app-version" 的自定义 header。我做了一个测试,尝试修改这个值,看看它是否真的被改变了
response.setHeader("app-version","hello");
但是不,当我检查响应 header 时,"app-version" 仍然是调用之前的状态。
我是否必须启用任何东西才能在我的控制器中修改 header?
尝试将 return 类型从 void 更改为 String
public String downloadZip(HttpServletResponse response) {
...
return ""
}
我认为如果端点 return 没有任何内容,spring 将不会在 header 中应用任何更改。
我有一个简单的 Spring MVC RestController
@RestController
@RequestMapping(value = "/xxx")
public class MyResource {
其中一个端点是 return ZIP 文件,所以我有这个:
@RequestMapping(value = "/xxx", method = RequestMethod.GET)
public void downloadZip(HttpServletResponse response) {
InputStream is = ...
IOUtils.copy(is, response.getOutputStream());
response.setContentType("application/zip");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, attachment; filename=myfile.zip);
response.flushBuffer();
}
以上是为了 return 一个 ZIP 并添加两个额外的 header 以便浏览器知道它是触发下载的东西。
但事实并非如此,当我使用 chrome 网络工具检查响应 header 时, header 与请求到达端点之前完全相同。 content-type 仍然是 application/json 而 content-disposition 甚至不存在。
我有一个名为 "app-version" 的自定义 header。我做了一个测试,尝试修改这个值,看看它是否真的被改变了
response.setHeader("app-version","hello");
但是不,当我检查响应 header 时,"app-version" 仍然是调用之前的状态。
我是否必须启用任何东西才能在我的控制器中修改 header?
尝试将 return 类型从 void 更改为 String
public String downloadZip(HttpServletResponse response) {
...
return ""
}
我认为如果端点 return 没有任何内容,spring 将不会在 header 中应用任何更改。