[精讚] [會員登入]
1578

【Wicket】[Header]如何讀取來自客戶端地檔頭和傳送自訂擋頭至客戶端

當需要設定檔頭或是讀取來自客戶端的檔頭時,這些程式碼就很好用

分享此文連結 //n.sfs.tw/16201

分享連結 【Wicket】[Header]如何讀取來自客戶端地檔頭和傳送自訂擋頭至客戶端@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2023-10-20 13:44:41 最後編修
2023-06-07 17:05:58 By 過路君子
 

哈囉大家好,這裡是又被Wicket挖坑跳得小編過路君子

上次寫 Wicket 筆記是兩個月前,那時候是為了 Cookie 煩惱,而這次則是為了 Header 煩惱......

 

 

有時候總會在意想不到的地方發生錯誤,這次是在小編想要用 Wicket 來寫一個從伺服器下載檔案並分析的功能。

結果呢,就被瀏覽器擋住檔案下載的功能了,後來發現原因是因為 Header 的 Access-Control-Allow-Origin 屬性未設定,所以瀏覽器不允許由 Javascript 自行在背景下載的檔案

順帶一提,似乎由使用者發起的檔案下載請求不會因為 Access-Control-Allow-Origin 導致下載被瀏覽器封鎖(仍須進一步的測試)。

 

設定Header

所以現在問題就是要如何去設定 Header,僅需在繼承了 WebPage 的那個 class 內加入以下資訊即可:

import org.apache.wicket.request.http.WebResponse;

public class myPage extends WebPage
{
	@Override
	protected void setHeaders(WebResponse response)
	{
		// default
		response.setHeader("Date", "[now]");
		response.setHeader("Expires", "[0]");
		response.setHeader("Pragma", "no-cache");
		response.setHeader("Cache-Control", "no-cache");

		// customize
		String fullUrl = this.getRequestCycle().get().getUrlRenderer().renderFullUrl(this.getRequestCycle().get().getRequest().getUrl());

		response.setHeader("Access-Control-Allow-Origin", fullUrl.substring(0, fullUrl.indexOf('/', fullUrl.indexOf('/')+2)));
	}
}

因為 Wicket 會有一些預設的 Header 值,所以我們必須要手動加回去,詳細資訊可以參考這裡

順帶一提,上面網址抓取的寫法只能自適應 IPv4 而已,IPv6 會出問題。

而設定方式可以參考下圖或是原本的出處這裡:

(所有圖片點擊都可以放大、變高清)

 

讀取Header

僅需要兩行,即可讀出特定 Header 欄位的值:

import javax.servlet.http.HttpServletRequest;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.request.mapper.parameter.PageParameters;

public class myPage extends WebPage
{
	public api_v1_stellar_server(PageParameters pageParameters) 
	{
		HttpServletRequest request = ((HttpServletRequest) this.getRequest().getContainerRequest());
				
		String authorization = request.getHeader("Authorization");
	}
}

 

 

 

後記

就只有設定方式比較麻煩,讀取倒是還好。

END

你可能感興趣的文章

【Kali Linux】[history -c]如何清除歷史記錄 非bash環境會使history部分功能變的非法

【Wicket】[nonce]如何導入css以及javascript 如果只是用一般的 HTML link 或是 script 標籤來寫,會被 CSP 擋住,禁止加載資源,那我們除了關閉 CSP 以外還有沒有辦法來解決呢?

【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下 Wildfly的預設網址又臭又長又不好記,而且會被看到後端的目錄路徑安排,當然能藏就盡量藏起來啦

【Minecraft】[CoreProtect|BungeeCord]如何重新命名世界或維度名稱 當只有一個伺服器的時候,問題往往處理起來非常簡單,但是一旦當伺服器成長至兩台以上,事情便開始有趣了起來

【C++】SFML安裝於Microsoft Visual Studio 2019 此方法僅適用單個C++專案,因為一次就適用整台電腦的方式有人寫了,而且寫得非常不錯。

【Wicket】[CSP] Content-Security-Policy & Content-Security-Policy-Report-Only Wicket 預設開啟的,所以如果要加載外部資源甚至是同源資源都會被擋下。

隨機好文

高捷少女:美麗島的守護者③ 小雅閉上眼睛,思索在高捷發生的點點滴滴。她心意已決,在高捷的日子的確也有快樂的部分,不過她相信換個方向是更好的決定。有關高捷的所有美好回憶,小雅決定保留在心裡就好,繼續在高捷工作只會讓自己更痛苦而已,

高捷少女:耐耐的新年驚喜(終) 他的話說到一半,便被一陣響亮的哭聲打住了,是從產房中的傳來的。聽起來就像嬰兒的哭聲。 婕兒、小穹跟艾米也被哭聲吵醒,婕兒揉揉眼睛,看向呆若木雞的耐耐父女。「剛剛的聲音,該不會是……」

婕兒──她的青春① 「各位乘客,本列車即將抵達拉里奧哈自治區,並在此地停留三天兩夜,後天的中午十二點將搭乘班機返回臺灣,感謝各位乘客對本次旅程的配合。」火車上的廣播器朗誦道。「時間過得真快呢,這次的歐洲之旅就這樣結束了,

婕兒──她的青春④ 「投降吧,耐耐!這回合妳將不會再有獲勝的機會了!哈哈哈哈!」 「妳確定?」耐耐臉上泛起一絲微笑,並將手中的牌展示給婕兒看 婕兒的笑容僵住了。恐懼浮現在她的臉。

【專輯介紹】蓮台野夜行 ~ Ghostly Field Club,れんだいのやこう 就讓我們隨著音樂跟著秘封俱樂部一起探詢那不可思議的未知和神秘,若處理不好,說不定會招來奇怪的靈呦(・ω<)☆