2014-05-19 177 views
4

我決定開發一個應用程序,該應用程序使用公共API爲城市中的公共汽車和地鐵提供時間表。手機訪問控制 - 允許來源

我決定開發這個應用程序使用HTML5,以便通過使用像phonegap的東西,我將能夠部署多個平臺。

在發展過程中,我發現我無法訪問從API JSON響應由於XMLHttpRequest的,不能負荷無「訪問控制允許來源」標頭出現在所請求的資源

因此,我決定使用一個普通的提供商網站空間作爲一個橋樑與我發送請求,並能夠從該API服務的響應,併發回到我的HTML頁面的JSON結果的PHP函數。

我有兩個問題,其中一個起始頁面或線索將不勝感激: 1)Access-Control-Allow-Origin的這個問題也會出現,如果我在本機代碼中開發應用程序java和ObjC)?

2)如果HTML5和JavaScript是由phonegap編譯的,我將仍然無法訪問該API服務,我仍然有同樣的問題,我仍然必須使用PHP橋?

回答

3

1)訪問控制允許來源的這個問題是值得 也會出現,如果我開發的本地代碼(Java和 ObjC)的應用程序?

不,這是一個只有瀏覽器實現的安全功能。

2)如果HTML5和JavaScript通過PhoneGap的編譯我會 仍無法訪問該API服務,我會仍然有同樣的 的問題,我仍然要使用PHP橋?

PhoneGap會設置正確的標題,允許您訪問所有主機。它無法覆蓋或修改響應服務器返回的標頭。通常API端點設置正確的標題,你應該考慮告訴API所有者,如果他們不。

+0

謝謝你的明確答案。所以這意味着這是沒用的在html5中開發一些像這樣的服務的東西,除非你直接訪問API !.我想要堅持這個項目,我需要一臺服務器作爲橋樑,我可以問你我該怎麼做?在普通服務器上購買普通域名,購買VPN還是專用服務器?你能指出我正確的方向嗎?無論如何謝謝你的答案。 –

0

我有一個類似的問題,試圖使用外部API(超市API),並發現當我真正上傳我的代碼的PhoneGap構建,然後下載它的設備,http請求正在解析。

+0

在您的瀏覽器上進行調試而不會出現Access-Control-Allow-Origin錯誤,從瀏覽器手動執行api調用並保存響應,然後使用這些json文件代替代碼中的任何http獲取,以便您有一些模擬結果。我使用了一個標誌來說明應用程序是處於調試模式還是生產模式,並且每次有對api的http請求時都會檢查此標誌,並使用json響應文件而不是執行http GET。 – Robert