这可能是一个愚蠢的问题......但我正在尝试使用phonegap和dojo创建我的第一个应用程序。我能够使用ajax并从服务器读取一些数据。这在android模拟器上工作正常。我也可以在我的桌面浏览器中键入url并查看值。我正在使用带有json对象的spring。
当我在手机网络浏览器中输入相同的网址时,出现404错误。有人可以告诉我为什么吗?我对移动开发很陌生,我觉得我错过了一些东西。
网址是公开的。
由于
UPDATE 使用相同的ajax调用,我可以访问以下url http://search.twitter.com/search.json?q=bacon,它从twitter返回一个json文件。所以我不认为这是我的客户端代码。还有其他想法吗?
答案 0 :(得分:1)
Accept: application/json
Web浏览器默认使用通配符(接受: / )
2)您的服务器可能使用ua-agent标头过滤掉并拒绝非网络浏览器
答案 1 :(得分:0)
最近我遇到了类似的问题,当您尝试从Android模拟器连接到http://localhost时会发生这种情况。 看到这个包含很好的解决方案的线程 - > Accessing webserver running within Eclipse from outside the workstation
简单的解决方案: 如果要从Android模拟器访问localhost,则应使用10.0.2.2
答案 2 :(得分:0)
感谢大家的帮助。它最终是由nginx将移动请求重新路由到未托管应用程序的服务器引起的。因此404错误。
答案 3 :(得分:0)
我目前的PhoneGap项目中出现了类似的症状。当我试图通过jQuery调用来访问我的nginx / PHP后端时:
var jqxhr = $.post(SERVER_URL, {'some': 'parameters', 'another': 'parameter'}, null, "jsonp")
.done(function (data) {
// Success, do something...
})
.fail(function (data) {
// Failed, do something...
});
...使用SSL时,404连接失败。如果SERVER_URL
指向http
网址,则该呼叫可以正常运行。服务器上没有任何重定向。根据服务器日志,后端已执行,并返回正确的JSON格式输出。
代码仅在Android 6.x中失败(之前没有测试过),但在iOS 10.x(之前没有测试过)以及Firefox和Chromium上工作正常。
原因是我的nginx配置有以下选项:
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
似乎其他平台不像Android那样尊重这些标题。