如果example.com
有m.example.com
移動版本,它們是用User Agent sniffing可能重定向手機用戶。
該網站的服務器基本上會查看您的請求的User-Agent
HTTP標頭,並將其與一組值相匹配以檢測移動瀏覽器。下面是它是如何在Apache的做了一個例子:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} (.*)iPhone(.*) [NC,OR]
RewriteRule^http://m.example.com [L,QSA]
好消息是,你可以欺騙服務器進入由自己設定的標題爲您服務m.example.com
。下面是捲曲的一個示例:
curl facebook.com
curl facebook.com -L -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5"
第一個將檢索facebook.com的HTML,第二個設置用戶代理頭iPhone的值。請注意,我們必須使用-L選項才能使curl遵循從facebook.com
到m.facebook.com
的重定向。
服務器端重定向可能使用User-Agent HTTP頭來檢測iOS並轉發到移動站點的響應,如果您從前端執行此操作,則無法設置出於安全原因,通過XHR特定的頭文件。您需要在您的後端設置代理服務來設置User-Agent頭,發出請求並將其返回給您的JS功能。 – Barney