我已经找到了使用 jQuery 和 PhoneGap 进行 ajax 调用的工作解决方案,以获取例如简单的 json 数据。但现在我想向 CGI 程序发送一个 HTTP Post。我对所有内容进行了编码,并且在浏览器中运行良好,但是当我在我的 android 4.1 智能手机上安装 apk 文件时,我从 ajax() 调用中收到错误消息。我现在不知道该怎么办。代码看起来像这样,正如我所说,它可以在我的 PC 上的浏览器中运行(在 android 上的浏览器中,无论是 firefox 还是 android 浏览器,它都不起作用,而不是作为应用程序)。
$.ajax({
url: "http://ip/thing.CGI",
type: "POST",
username: "name",
password: "pw",
data: params
}).always(function( data, textStatus, jqXHR ) {
alert(textStatus + ": " + data);
});
有没有人解决这个问题?谢谢你
解决方案:
我刚刚发现我必须手动设置请求标头“授权”并使用 btoa() 对用户和密码进行编码。您必须将其添加到 ajax 设置数组中。例如,这可以工作:
$.ajax({
url: "http://ip/thing.CGI",
type: "POST",
headers: {
"Authorization" : "Basic " + btoa("user:password")
},
data: params
}).always(function( data, textStatus, jqXHR ) {
alert(textStatus + ": " + data);
});
所以这与是否调用 CGI 程序无关,而是与服务器的基本授权有关。