2011-11-14 53 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謝謝指出出去了,補充了缺少的''' –

相關問題