Как AJAX-запросы работают на Android 2.0 против Android 2.2 - PullRequest
3 голосов
/ 22 июля 2010

Я тестирую веб-страницу на эмуляторах Android 2.0 и 2.2, и запросы jQuery.ajax (), которые выполняет приложение, имеют немного другое поведение в отношении заголовков HTTP-аутентификации.

Сервер, к которому я обращаюсь, требует базовой аутентификации, а запросы ajax в 2.2 отправляют правильный заголовок аутентификации. В 2.0 я отлаживаю с помощью Fiddler, и кажется, что запросы не включают в себя заголовок auth, и сервер отклоняет запрос с ошибкой 401.2. Я не думаю, что это имеет значение, но сервер работает под управлением IIS 7.

Одна интересная вещь, которую я заметил при отладке веб-запросов, состоит в том, что Android 2.2 делает два запроса для каждого ресурса, независимо от того, XHR или нет. Один не содержит заголовок Auth, а второй -. В 2.0, кажется, делает 2 запроса на все, кроме XHR:

Вот заголовок 2.2 для первого 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

Заголовок 2.2 для второго 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

И заголовок 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

Кто-нибудь испытывал такое поведение раньше? Это в основном заставляет мое приложение вообще не работать в версии 2.0. Версия 2.1, кажется, действует так же, как 2.0.

Дайте мне знать, если у вас есть идеи, спасибо за вашу помощь,

Dave

1 Ответ

0 голосов
/ 11 августа 2010

да, у меня точно такая же проблема, и я смог обойти ее, записав данные аутентификации в cookie при первом входе в систему, а затем добавить это к запросу ajax при каждом входе в систему в 2.0, но в 2.1 по какой-то причине не работает при быстрой попытке, но если вы делаете паузу между шагами ajax-запросов, то это работает. Кроме того, обновление браузера, похоже, несет данные аутентификации ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...