[精讚] [會員登入]
1873

【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

你可能感興趣的文章

【C】(%c, %d)解決讀取字元時的緩衝區殘留 不解決就會莫名其妙地冒出一些莫名其妙的東西

【JDA/discord bot】package does not exist fix JDA 4.0 和 5.0 差別還是很大的

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

【SeaChest & Synology】512e(Advanced Format / AF) 轉換至 4Kn 好不容易入手了一顆硬碟,但是卻無法使用,除了賣掉還有更好的方法嗎?

【Maven / Jython】建立可直接執行的JAR檔案 以小編的前一篇文章為基礎,加了一些新東西進去,就變成另一個樣貌了

【NodeMCU / ESP8266】[Arduino]測量溫溼度並上傳至ThinkSpeak 使用簡單的溫度計來測量溫濕度並上傳至第三方網站,這樣他人只要有瀏覽器就能看到我們的數據了

隨機好文

【手遊介紹】小品手遊─寶箱是我的!(SUMMONER'S GREED) 輕鬆無腦的塔防遊戲,殺時間本小編推薦的遊戲之一

【開箱】高捷少女collection總集篇1 由希萌創意寄來的大包裹!裡面究竟有什麼呢?小編就帶大家來看看!

高捷少女:地下城的探險少女(終)  小穹眨眨眼睛,然後說了出來。「其實,從剛剛開始,我就在想了……是在看過這本日記之後。」她拿出日記。「我想……我們尋找寶藏的想法,是不是真的正確的?」「怎麼說呢?」耐耐好奇地問。「這個埋藏寶藏的人,在

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

高捷少女:耐耐的新年驚喜① 耐耐拿出手機。「我回來囉。」她說。幾分鐘後,木門緩緩打開。當它完全開啟的那一刻,小穹手中的包包掉到地上;艾米揉揉雙眼,確定自己看見的景象;婕兒的三魂七魄飛到了九霄雲外。