web-dev-qa-db-fra.com

UIWebView envoie-t-il le même agent utilisateur dans les en-têtes de demande que Safari mobile?

Désolé, je voudrais juste tester cela moi-même, mais je suis actuellement sans mon Mac. Une demande Web effectuée à l'intérieur d'un UIWebView envoie-t-elle les mêmes informations d'agent utilisateur qu'une demande Web effectuée à partir de Safari mobile?

33
dl.

Les demandes Web effectuées à partir d'UIWebView n'incluront pas le mot "Safari" dans la chaîne de l'agent utilisateur. Les demandes Web faites depuis Mobile Safari le seront. C'est le meilleur moyen que j'ai trouvé pour déterminer qu'une demande provient d'une application ou de Mobile Safari.

Exemple d'agent utilisateur d'UIWebView dans l'application:

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

Exemple d'agent utilisateur de 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
34
dl.

Les chaînes d'agent utilisateur de Safari mobile autonome contiennent la "version" de Word, contrairement aux chaînes d'agent utilisateur uiWebView. Ainsi, le script de détection peut être modifié pour fonctionner avec la dernière version d'iOS comme ceci:

var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent);
13
unceus