從A站轉至B站,解決Referer為空問題

最近做了一個短網址功能,由A站輸入短網址轉至B站

但因為B站要Referer為A站才可以訪問,碰到一些問題,所以記錄一下

 

Referer說明:使目前的網頁可以檢查訪客從哪裡而來

var sourceUrl = "B站網址";
PHtmlContent = string.Format("<script type=\"text/javascript\">document.location.href='{0}';</script>", sourceUrl);
              
return PHtmlContent;

原先撈到目標網址(B站),是以document.location.href="B站網址"來做轉址

但因為document.location.href等於是直接貼上網址訪問

所以這樣轉去B站的Referer會是空的或直接是判斷成B站訪問B站

 

所以改為以下方式


var sourceUrl = "B站網址";

PHtmlContent = 
string.Format("<meta name='referrer' content='always'><form action='{0}' id='redirectForm' method='POST'></form>" +
"<script type=\"text/javascript\">document.getElementById('redirectForm').submit();</script>", sourceUrl);
                            
return PHtmlContent;

此方式等於是從表單Submit送出,B站的Referer就能抓到訪問者為A站

而<meta name='referrer' content='always'>則是讓https轉http時也會抓到Referer,否則也有可能抓不到

 

以下為如何看Referer

第二個紅框處,任一個檔案都可以檢視

F12→Network→任一Name(檔案)→Request Headers→Referer