2011-11-14 56 views
1

这可能是一个愚蠢的问题......但我试图使用phonegap和道场使我的第一个应用程序。我能够使用ajax并从服务器读取一些数据。这在android模拟器上正常工作。我也可以在我的桌面浏览器中输入网址并查看值。我用json对象使用spring。移动设备上的404错误,但在PC浏览器上工作

当我在手机网页浏览器中输入相同的网址时,我收到一个404错误。有人能告诉我为什么吗?我对移动开发非常陌生,我觉得我错过了一些东西。

该网址是公开的。

感谢

UPDATE 使用相同的Ajax调用我可以到以下网址http://search.twitter.com/search.json?q=bacon这从Twitter返回一个JSON文件。所以我不认为这是我的客户端代码。任何其他想法?

+0

你能否包含从手机发出的整个http请求。 – suing

+0

这是一个测试服务器,所以我不会给出完整的网址,但它基本上是'http://mydomain.com/mobile/mobile/calc.json'(不含引号)。这是一个非常基本的春季应用程序。它适用于我所有的桌面浏览器。只需在手机浏览器上发现404错误 – blong824

+0

仔细检查网址。然后检查服务器日志。 –

回答

0

感谢大家的帮助。最终,nginx将移动请求重新路由到未托管应用程序的服务器。因此,404错误。

1

乱撞 1)服务器可期待适当的标题

Accept: application/json 

Web浏览器默认使用通配符(接受:/

2)你的服务器可能过滤掉使用UA-代理标题和拒绝非网页浏览器

+0

感谢您的回答。我在春天使用了@ResponseBody,并且在我的类路径中使用了mvc:annotation-driven和jackson。我相信它应该使用此设置自动将标题设置为application/json。我检查了我的服务器管理员,他没有过滤任何东西。他向我展示了我们也可以从服务器上的命令行中找到url。他看到我的android设备请求相同的url,它发送404而不是200? – blong824

+0

我的意思是客户端需要在它的头部有这个 - > Accept:application/json
这些是根据问题描述的野生猜测 – guleryuz

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 URL,则该呼叫正常工作。服务器上没有任何重定向。根据服务器日志执行后端,它返回正确的JSON格式的输出。

代码仅在Android 6.x(未经测试)之前失败,但在iOS 10.x(以前未测试)以及Firefox和Chromium中均可正常工作。

的理由是,我的nginx的配置有以下选项:

add_header X-Frame-Options DENY; 
add_header X-Content-Type-Options nosniff; 

看来,其他平台不尊重这些标题作为Android的那样。

+0

''''''''''''''参数''''''''''' – jmattheis

+0

@jmattheis谢谢指出出去了,补充了缺少的''' –

相关问题