2016-06-15 37 views
0

我有一個簡單的Spring MVC RestControllerSpring MVC的:在RestController添加的報頭不返回

@RestController 
@RequestMapping(value = "/xxx") 
public class MyResource { 

其中一個端點是爲了返回一個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(); 
    } 

以上是爲了返回一個ZIP,併爲瀏覽器添加兩個額外的頭文件,以知道它是觸發下載的東西。

但事實並非如此,當我使用chrome網絡工具檢查Response標頭時,標頭與請求到達端點前的完全相同。 內容類型仍然是application/json,內容處置甚至不在那裏。

我有自定義標題叫「應用程序版本」。我做了一個測試的嘗試修正值,看它是否真正得到改變

response.setHeader("app-version","hello"); 

但是,沒有,當我檢查響應頭的「應用程序版本」仍是調用之前是什麼。

我必須啓用任何東西才能修改控制器中的標題嗎?

回答

0

嘗試改變從無效的返回類型爲String

public String downloadZip(HttpServletResponse response) { 
     ... 
     return ""   
    } 

我想春天就不會適用於頭的任何變化,如果端點不返回任何東西。

+0

確實!!如果確實返回「」,那麼我的標題就會被修改! – Johny19