Scusate, vorrei testarlo anch'io, ma al momento sono senza il mio mac. Una richiesta web fatta all'interno di una UIWebView invia le stesse informazioni utente-agente che una richiesta web fatta da Safari mobile avrebbe?UIWebView invia lo stesso agente utente nelle intestazioni di richiesta come Safari mobile?
28
A
risposta
31
Le richieste Web eseguite da UIWebView non includono la parola "Safari" nella stringa User Agent. Le richieste Web fatte da Mobile Safari lo faranno. Questo è il modo migliore che ho trovato per determinare una richiesta provenire da un'app o da Mobile Safari. Agente
Esempio utente da UIWebView all'interno di App:
User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile
Esempio User Agent da Mobile Safari:
User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari
11
autonomi Safari Mobile stringhe user agent contiene la parola 'Version', mentre user agent UIWebView le stringhe no. Quindi, lo script di rilevamento può essere modificato per funzionare con l'ultima versione di iOS in questo modo:
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent);
La webview di Android invia l'intestazione http "X-Requested-With". Il browser stand alone no. Anche l'UIWebView di iPhone fa altrettanto? vedi http://stackoverflow.com/a/15254092/90236 –
Purtroppo questa risposta non riesce con Chrome iOs. Questi sono gli UA per Safari e Chrome. Entrambi contengono "Safari" --- 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 come Mac OS X) AppleWebKit/537.51.2 (KHTML, come Gecko) Versione/7.0 Mobile/11D201 Safari/9537.53' --- 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 come Mac OS X) AppleWebKit/537.51.1 (KHTML, come Gecko) CriOS/35.0.1916.38 Mobile/11D201 Safari/9537.53' –
@ bfred.it Io non capisci il tuo commento La domanda non ha nulla a che fare con la distinzione tra browser mobili diversi l'uno dall'altro. Solo dalla distinzione di una UIWebView integrata dal browser integrato. – Johann