1. 程式人生 > 其它 >記錄幾個javax.ws.rs.core.Response處理header的幾個內容

記錄幾個javax.ws.rs.core.Response處理header的幾個內容

技術標籤:JAVA後端java

Access-Control-Expose-Headers

響應首部Access-Control-Expose-Headers列出了哪些首部可以作為響應的一部分暴露給外部。

預設情況下,只有七種simple response headers(簡單響應首部)可以暴露給外部:

如在處理java返回檔案的劉檔案時,可將Content-Disposition對外暴露,讓前端直接處理檔案流資料

如果想要讓客戶端可以訪問到其他的首部資訊,可以將它們在Access-Control-Expose-Headers

裡面列出來。

Content-Disposition

Content-disposition 是 MIME 協議的擴充套件,MIME 協議指示 MIME 使用者代理如何顯示附加的檔案。Content-disposition其實可以控制使用者請求所得的內容存為一個檔案的時候提供一個預設的檔名,檔案直接在瀏覽器上顯示或者在訪問時彈出檔案下載對話方塊。
格式說明:content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )  

欄位說明:Content-Disposition為屬性名disposition-type是以什麼方式下載,如attachment為以附件方式下載disposition-parm為預設儲存時的檔名服務端向客戶端遊覽器傳送檔案時,如果是瀏覽器支援的檔案型別,一般會預設使用瀏覽器開啟,比如txt、jpg等,會直接在瀏覽器中顯示,如果需要提示使用者儲存,就要利用Content-Disposition進行一下處理,關鍵在於一定要加上attachment:複製程式碼 程式碼如下:

Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");

備註:這樣瀏覽器會提示儲存還是開啟,即使選擇開啟,也會使用相關聯的程式比如記事本開啟,而不是IE直接打開了。Content-Disposition就是當用戶想把請求所得的內容存為一個檔案的時候提供一個預設的檔名。
那麼由上可知具體的例子:Content-Disposition: attachment; filename="filename.xls"當然filename引數可以包含路徑資訊,但User-Agnet會忽略掉這些資訊,只會把路徑資訊的最後一部分做為檔名。
當你在響應型別為application/octet- stream情況下使用了這個頭資訊的話,那就意味著你不想直接顯示內容,而是彈出一個"檔案下載"的對話方塊,接下來就是由你來決定"開啟"還是"儲存" 了。

注意事項:
1.當代碼裡面使用Content-Disposition來確保瀏覽器彈出下載對話方塊的時候。 response.addHeader("Content-Disposition","attachment");一定要確保沒有做過關於禁止瀏覽器快取的操作。
程式碼如下:
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
不然會發現下載功能在opera和firefox裡面好好的沒問題,在IE下面就是不行。