請求頭origin表明了請求來自於哪個站點。包括且僅僅包括協議、域名和端口,並不包含任何路徑信息。經常用於CORS請求或者POST請求,可以看到response有對應的header:Access-Control-Allow-Origin。
@CrossOrigin(origins=":80")
@RequestMapping(value = "list", method = RequestMethod.POST)
public String list(HttpServletRequest request, HttpServletResponse response) {
}
告知服務器請求的原始資源的URI,其用於所有類型的請求,並且包括協議、域名、路徑和查詢參數。
在以下幾種情況Referer不會被發送:
1)來源頁面采用的協議為表示本地文件的 "file" 或者 "data" URI;
2)當前請求頁面采用的是非安全協議,而來源頁面采用的是安全協議(HTTPS);
3)直接輸入網址或通過瀏覽器書簽訪問;
4)使用 JavaScript 的 Location.href 或者是 Location.replace();
5)使用html5中noreferrer;
6)使用iframe的hack寫法去除referer。
請求頭中referer與origin功能相似,但有如下幾點不同:
1、只有跨域請求,或者同域時發送post請求,才會攜帶origin請求頭,而referer不論何種情況下,只要瀏覽器能獲取到請求源都會攜帶,除了上面提到的幾種情況。
2、如果瀏覽器不能獲取請求源,那麽origin滿足上面情況也會攜帶,不過其值為null。referer則不同,瀏覽器如果不能獲取請求源,那麽請求頭中不會攜帶referer。
3、origin的值只包括協議、域名和端口,而erferer不但包括協議、域名、端口,還包括路徑和參數。