目前的在Cordova有發生一個狀況,使用不同不同版本的Xcode建置iOS APP,Request會有不同的referer。
簡述Cordova App架構:
index.html(此為Cordova的主頁)
-> iframe (嵌入我的mobile網站,例如https://mymobileweb.com.tw )
Cordova主頁 index.html,設定meta:
<meta name="referrer" content="unsafe-url">
我的mobile網站主頁Home.html, 也作一樣的meta設定
<meta name="referrer" content="unsafe-url">
使用Xcode@11.5版本建置iOS App,當iframe內的mymobileweb使用$.ajax發出request到後端,可以看到referer為:「https://mymobileweb.com.tw/Home 」,這個是我要的結果。
但是使用Xcode@12.5.1建置iOS App,使用$.ajax發出request到後端,得到的referer卻是:「https://mymobileweb.com.tw/ 」,不包含Page Name,路徑。
這個部份如果我執行:
document.location.href = "https://mymobileweb.com.tw";
把Cordova原本的主頁(index.html)強制轉到我的mobile網站,即Cordova App結構:
Home.html
此時使用$.ajax發出request到後端,可以看到referer為:「https://mymobileweb.com.tw/Home 」,就是我要的結果,由此判斷Cordova的部份應該是沒有問題。
兩個測試方式使用的Cordova與我的mobile網站都是相同的原始碼,只差異在使用不同版本的Xcode產出iOS App。
這個部份我有查看 Referrer-Policy,大致理解不同的設定值對於referer造成的影響。
不過仍不解為何使用不同版本的Xcode產出的iOS APP會有這個差異,請問大家是否有什麼想法,或是可以從何下手呢?
查詢到相關討論資訊:iOS14发布后的用户跟踪和网站分析
Referrer限制
对Referrer的限制或许是ITP中除了对Cookie的限制之外最大的挑战。简单来说跨站的访问中将默认强制(意思是这是它的底线,你无法关闭或用更宽松的政策覆盖它)采用origin的政策(Referrer Policy)
看起來是iOS SDK 14的安全性調整。
Google 到這個可以設定 HTTP Header 的 Plugin
看看合不合用