Phonegap jQuery ajax仅在Android 4.2.2上获得未授权

时间:2014-10-20 09:40:46

标签: android jquery ajax cordova http-basic-authentication

我正在处理将POST数据发送到服务器的Phonegap应用程序。该代码适用于iOS,运行Android 4.4.4的Nexus 5以及桌面上的不同浏览器。然而,我在运行Android 4.2.2的目标设备Galaxy Trend Plus以及Android 4.2.2,4.3和4.4.2的仿真器上获得NodeJS上的未授权,http基本身份验证。

-Phonegap version 3.5.0-0.21.014
-jquery-1.10.2.min.js
-jquery.mobile-1.4.2.min.js

发送数据的代码,此时由一个按钮触发

function sendData(){
  var url = 'http://somethingsomething.com/addData'

  var msg=  {
    'userID':localStorage.getItem('id'),
    'userName':localStorage.getItem('name'),
    'log':localStorage.getItem('log') 
  };


  var result = $('#result');
  result.html('POST to: ' + url)
  $.ajax({
    url: url,
    type: "POST",
    data: JSON.stringify(msg),
    username: 'asdf',
    password: 'asdf',
    xhrFields:{withCredentials: true},
    contentType: 'application/json',
    satusCode:{ 200: function(){  result.html('POST success!') } },
    success: function(data, textStatus, jqXHR) { result.html('Success : ' + data) },
    error: function(jqXHR, textStatus, errorThrown) { result.html('Error: '+     jqXHR.readyState + ' ' + errorThrown); }
  });

}

从浏览器和Nexus发送的标头是相同的:

Request URL:http://asdf:asdf@somethingsomething.com/addData
Request Method:POST
Status Code:200 OK
Request Headers CAUTION: Provisional headers are shown.
Accept:*/*
Content-Type:application/json
Origin:file://
User-Agent:Mozilla/5.0 (Linux; Android 4.4.4; Nexus 5 Build/KTU84P) AppleWebKit/537.36     (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36
Request Payloadview source
{userID:57, userName:NEXUS,…}
log: "...deleted..."
userID: "57"
userName: "NEXUS"

Response Headers
Accept-Ranges:none
Access-Control-Allow-Headers:X-Requested-With, Content-Type
Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Type:text/plain
Date:Mon, 20 Oct 2014 08:10:59 GMT
Keep-Alive:timeout=15, max=99
Transfer-Encoding:chunked
X-Powered-By:Express

我知道一切正常,数据将被发送并保存在服务器上。问题仅在于运行android 4.2.2的Galaxy TrendPlus。 Chromes检查设备无法使用它,所以我真的无法调试它。除了可能通过我的计算机(Ubuntu)管道流量并监控它?

非常感谢任何和所有的帮助/想法,谢谢!

增加:
我能想到的任何差异应该与所使用的浏览器有关,所以我检查了navigator.userAgent
Trend Plus:Mozilla / 5.0 AppleWebKit / 534.30 Safari / 534.30
Nexus 5:Mozilla / 5.0 AppleWebKit / 537.36 Chrome / 37.000 Mobile Safari / 537.36
ubuntu上的Chromium:Mozilla / 5.0 AppleWebKit / 537.36 Ubuntu Chromium(37.0.2062.120 Chrome / 37.0.2062.120 Safari / 537.36

增加:
好的,我在Android Eclipse SDK中运行了代码,并在尝试发送数据时从运行Android 4.2.2的Trend上的LogCat中获取了这些代码。 Nexus似乎没有向LogCat输出任何东西。

external/chromium/net/socket/ssl_client_socket_openssl.cc:300: [1021/132507:INFO:ssl_client_socket_openssl.cc(300)] [cac_debug_log][ssl_client_socket_openssl.cc] GetInstance() cac_sata_: 0 CAC_CONTEXT_CAC: 3

external/chromium/net/socket/ssl_client_socket_openssl.cc:[1021/132507:INFO:ssl_client_socket_openssl.cc(10)] ssl_ctx_ is used

external/chromium/net/socket/ssl_client_socket_openssl.cc:[1021/132507:INFO:ssl_client_socket_openssl.cc(512)] ~SSLClientSocketOpenSSL()

澄清:连接是通过SSL连接的,必须使用httpBasicAuth验证POST。 Haven对这些消息的含义有所了解。谷歌把我带到https://code.google.com/p/chromium/issues/detail?id=166746这些类型的页面,这些页面没有帮助。

0 个答案:

没有答案