我正在測試Android 2.0和2.2模擬器上的網頁,並且jQuery.ajax()請求應用程序使HTTP關於HTTP身份驗證標頭的行爲稍有不同。AJAX請求如何在Android 2.0與Android 2.2上工作
我要求的服務器需要基本身份驗證,並且2.2中的ajax請求發送正確的auth頭文件。在2.0中,我使用Fiddler進行調試,並且似乎請求中不包含auth頭,服務器拒絕401.2錯誤的請求。我不認爲它很重要,但服務器運行IIS 7.
我在調試Web請求時注意到的一件有趣事情是Android 2.2對每個資源發出兩個請求,不管它是否是XHR。一個不包含Auth頭,第二個包含。在2.0中,它似乎讓一切2個請求,但XHR的:
這裏是第一XHR 2.2標題:
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相同。
讓我知道如果您有任何意見,感謝您的幫助,
戴夫
我發現了一個機票項目似乎是相關的Android項目: http://code.google.com/p/android/issues/detail ?id = 3497 任何人都可以幫助我驗證此問題是否特定於2.1和更低版本,並可能幫助我從我的最終解決問題?謝謝, 戴夫 – 2010-07-27 14:34:40