移动设备上的404错误,但适用于PC浏览器

时间:2011-11-14 18:21:38

标签: android rest mobile cordova

这可能是一个愚蠢的问题......但我正在尝试使用phonegap和dojo创建我的第一个应用程序。我能够使用ajax并从服务器读取一些数据。这在android模拟器上工作正常。我也可以在我的桌面浏览器中键入url并查看值。我正在使用带有json对象的spring。

当我在手机网络浏览器中输入相同的网址时,出现404错误。有人可以告诉我为什么吗?我对移动开发很陌生,我觉得我错过了一些东西。

网址是公开的。

由于

UPDATE 使用相同的ajax调用,我可以访问以下url http://search.twitter.com/search.json?q=bacon,它从twitter返回一个json文件。所以我不认为这是我的客户端代码。还有其他想法吗?

4 个答案:

答案 0 :(得分:1)

疯狂的猜测 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那样尊重这些标题。