referer,正確寫法referrer,指的是網站的一種安全策略,在請求頭CSP(Content-Security-Policy),標簽或者是指定的html標簽里都可以設定它,它指的是上一個請求的來源記錄,比如你從a1通過鏈連,跳到a2,那在a2的請求頭里,就會有a1的網址或者域名,這個和referrer策略有關,
Referrer-Policy策略介紹(注意這里是Referrer)
1 no-referrer
整個 Referer 首部會被移除,訪問來源資訊不隨著請求一起發送
2 no-referrer-when-downgrade (默認值)
在沒有指定任何策略的情況下用戶代理的默認行為,在同等安全級別的情況下,參考頁面的地址會被發送(HTTPS->HTTPS),但是在降級的情況下不會被發送 (HTTPS->HTTP),
3 origin
在任何情況下,僅發送檔案的源作為參考地址,例如 https://example.com/page.html 會將 https://example.com/ 作為參考地址,
4 origin-when-cross-origin
對于同源的請求,會發送完整的URL作為參考地址,但是對于非同源請求僅發送檔案的源,
5 same-origin
對于同源的請求會發送參考地址,但是對于非同源請求則不發送參考地址資訊
6 strict-origin
在同等安全級別的情況下,發送檔案的源作為參考地址(HTTPS->HTTPS),但是在降級的情況下不會發送 (HTTPS->HTTP),
7 strict-origin-when-cross-origin
對于同源的請求,會發送完整的URL作為參考地址;在同等安全級別的情況下,發送檔案的源作為參考地址(HTTPS->HTTPS);在降級的情況下不發送此首部 (HTTPS->HTTP),
8 unsafe-url
無論是同源請求還是非同源請求,都發送完整的 URL(移除引數資訊之后)作為參考地址,(最不安全的策略了)
kc集成了企業微信后的問題
- 由于企業微信的二維碼是在它們自己的網站上生成的,而它們企業微信為了安全,會判斷請求頭的referer,這個referer是在“企業微信后臺-登錄授權-登錄授權發起域名”進行配置的,也就是說,你跨轉到二維碼頁面之前,你的域名需要是合法的,
- 在KC集成的社區登錄中,登錄按鈕會先到KC自己的頁面進行引陣列裝,然后307方式的重定向到社區登錄頁,而在
referer中,資訊傳遞不支持redirect這種,所以,我們需要進行從新設計,
通過頁面輸出TEXT_HTML來解決這個問題
public Response performLogin(AuthenticationRequest request) {
try {
URI authorizationUrl = createAuthorizationUrl(request).build();
return Response.ok("<html><head>" +
"<script type=\"text/javascript\">function a1(){" +
"document.getElementById('jump').click();"+
"}</script>" +
"</head>" +
"<body onl oad='a1()'>" +
"<a href='"+authorizationUrl+"' id='jump' referrerpolicy=\"strict-origin-when-cross-origin\">頁面跳轉中...</a>"+
"</body></html>", MediaType.TEXT_HTML).build();
} catch (Exception e) {
e.printStackTrace(System.out);
throw new IdentityBrokerException("Could not create authentication request.", e);
}
}
微信端網址的請求頭的referrer策略

其中strict-origin-when-cross-origin表示在跨域時,記錄前一天網站的域名,請求頭資訊

作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491393.html
標籤:Java
