Désolé, je voudrais juste tester moi-même, mais je suis actuellement sans mon mac. Est-ce qu'une requête web faite à l'intérieur d'un UIWebView envoie les mêmes informations d'agent utilisateur qu'une requête web faite à partir de Safari mobile?UIWebView envoie-t-il le même user-agent dans les en-têtes de demande que Safari mobile?
28
A
Répondre
31
Les requêtes Web créées à partir de UIWebView n'incluront pas le mot «Safari» dans la chaîne User Agent. Les demandes Web faites à partir de Mobile Safari seront. C'est la meilleure façon de déterminer si une demande provient d'une application ou de Mobile Safari.
User Agent Echantillon de UIWebView dans les 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
User Agent Echantillon de Safari Mobile:
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
chaînes d'agent utilisateur mobile Safari autonomes contiennent le mot 'Version', alors que l'agent utilisateur UIWebView les chaînes ne le font pas. Ainsi, le script de détection peut être modifié pour fonctionner avec la dernière version d'iOS comme suit:
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent);
La page Web d'Android envoie l'en-tête http «X-Requested-With». Le navigateur autonome ne le fait pas. Est-ce que l'UIWebView de l'iPhone le fait aussi? voir http://stackoverflow.com/a/15254092/90236 –
Malheureusement, cette réponse échoue avec Chrome iOs. Ce sont les UA pour Safari et Chrome. Les deux contiennent "Safari" --- 'Mozilla/5.0 (iPhone, CPU iPhone OS 7_1_1 comme Mac OS X) AppleWebKit/537.51.2 (KHTML, comme Gecko) Version/7.0 Mobile/11D201 Safari/9537.53' --- 'Mozilla/5.0 (iPhone, CPU iPhone OS 7_1_1 comme Mac OS X) AppleWebKit/537.51.1 (KHTML, comme Gecko) CriOS/35.0.1916.38 Mobile/11D201 Safari/9537.53' –
@ bfred.it Je ne sais pas Comprenez votre commentaire. La question n'avait rien à voir avec la distinction de différents navigateurs mobiles les uns des autres. Seulement en distinguant un UIWebView intégré du navigateur intégré. – Johann