3 votes

Fonctionnement des requêtes AJAX sur Android 2.0 et Android 2.2

Je teste une page Web sur les émulateurs Android 2.0 et 2.2, et les requêtes jQuery.ajax() que l'application effectue ont des comportements légèrement différents en ce qui concerne les en-têtes d'authentification HTTP.

Le serveur auquel j'adresse mes requêtes requiert une authentification de base, et les requêtes ajax en 2.2 envoient l'en-tête auth approprié. En 2.0, je débogue avec Fiddler, et il semble que les requêtes n'incluent pas l'en-tête auth, et le serveur rejette la requête avec une erreur 401.2. Je ne pense pas que cela soit important, mais le serveur exécute IIS 7.

Une chose intéressante que j'ai remarquée en déboguant les requêtes web est qu'Android 2.2 effectue deux requêtes pour chaque ressource, qu'il s'agisse ou non d'un XHR. L'une d'elles ne contient pas l'en-tête Auth, et la seconde le contient. En 2.0, il semble faire 2 requêtes pour tout sauf pour les XHR :

Voici l'en-tête 2.2 pour le premier XHR :

GET http://192.168.1.111/sonar/mobileweb/sonar/views/week/init.ejs HTTP/1.1
Host: 192.168.1.111
Accept-Encoding: gzip
Referer: http://192.168.1.111/sonar/mobileweb/sonar/sonar.html
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Accept: text/plain, */*
X-Requested-With: XMLHttpRequest
Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7

L'en-tête 2.2 pour le deuxième XHR :

GET http://192.168.1.111/sonar/mobileweb/sonar/views/week/init.ejs HTTP/1.1
Host: 192.168.1.111
Accept-Encoding: gzip
Referer: http://192.168.1.111/sonar/mobileweb/sonar/sonar.html
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Authorization: Basic cGFyaXZlZGFcZGF2aWQubW9ycmlzOjIzbkx2ZWxsbGw=
Accept: text/plain, */*
X-Requested-With: XMLHttpRequest
Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7

Et l'en-tête 2.0 :

GET http://192.168.1.111/app/views/week/init.ejs HTTP/1.1
Host: 192.168.1.111
Accept-Encoding: gzip
Referer: http://192.168.1.111/app/app.html
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Linux; U; Android 2.0; en-us; sdk Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
Accept: text/plain, */*
X-Requested-With: XMLHttpRequest
Accept-Charset: utf-8, iso-8859-1, utf-16, *;q=0.7

Quelqu'un a-t-il déjà été confronté à ce comportement ? En fait, mon application ne fonctionne pas du tout dans la version 2.0. La version 2.1 semble fonctionner de la même manière que la 2.0.

Faites-moi savoir si vous avez des idées, merci pour votre aide,

Dave

0voto

Krishna Gupta Points 121

Oui, j'ai exactement le même problème, et j'ai pu le contourner en écrivant les données d'authentification dans un cookie lors de la première connexion, puis en les ajoutant à la requête ajax à chaque connexion dans la version 2.0, mais dans la version 2.1, pour une raison quelconque, cela ne fonctionne pas si on essaie rapidement, mais si on fait une pause entre les étapes des requêtes ajax, cela fonctionne. De plus, un rafraîchissement du navigateur semble transporter les données d'authentification...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X