2015-05-19 61 views
8

上週一切順利,當我在設備上運行應用程序或使用Genymotion進行仿真時,所有對api的調用都在工作(返回數據或失敗,但至少顯示的東西)。

我用

ionic run android 

我加入到了全局科爾多瓦離子:

npm install -g cordova ionic 

由於所有$ http請求甚至不處理。我無法得到任何答覆,而Api仍然正常工作,並且CORS完美設置。

我發現的唯一方法是使用選項--livereload或-l:

ionic run -l android 

我想避免使用livereload不惜任何代價。

我開始從零開始創建一個項目,使用ionic 1.0.0和cordova lib 4.3.0。

angular.module('starter.controllers', []) 

.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http) { 

    alert('calling api'); 
    // Create an anonymous access_token 
    $http 
     .get(domain+'/oauth/v2/token?client_id='+public_id+'&client_secret='+secret+'&grant_type=client_credentials') 
     .then(function(response){ 
      alert(response.data.access_token); 
     }); 
}) 

因此,儘管使用:

ionic serve 

它被正確地提醒 '調用API' 那麼該響應(對於例如OAuth訪問令牌)。

但同時使用:

ionic run android 

它只是提醒「調用API」,但似乎並沒有處理HTTP請求。

有沒有人體驗過類似的東西?我對此感到非常頭痛。

+1

看看這個答案可以幫助你:http://stackoverflow.com/a/29916802/4412363 – Keval

+0

謝謝你,我會嘗試,現在回到你身邊。 – Brieuc

+0

好的,這是工作!那麼你想寫一個答案鏈接到這篇文章,我很樂意驗證它。 – Brieuc

回答

18

隨着科爾多瓦4.0.0的更新,你將面臨不能夠使HTTP調用REST風格的API和加載外部資源,包括其他HTMLS /視頻/音頻/圖像的問題。

使用cordova-plugin-whitelist將域列入白名單可解決問題。

白名單中刪除插件如果已經安裝:

cordova plugin remove cordova-plugin-whitelist 

通過CLI添加白名單插件:

cordova plugin add cordova-plugin-whitelist 

,然後將下面的代碼行添加到您的應用程序的配置。XML它位於應用程序的根目錄:

Reccomended文檔中:

<allow-navigation href="http://example.com/*" /> 

或:

<allow-navigation href="http://*/*" /> 

index.html

meta標籤
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

的原因針對此問題:

從科爾多瓦4.0.0用於Android的更新:

白名單功能改組

  • 您需要添加新的科爾多瓦-plugin-whitelist插件繼續使用白名單

  • 現在支持設置內容安全策略(CSP),並且是白名單的推薦方式(請參閱插件自述文件中的詳細信息)

  • 默認情況下,網絡請求在沒有插件的情況下被阻止,因此安裝此插件甚至允許所有請求,並且即使您使用CSP爲 。

  • 此新白名單已增強爲更安全且可配置,但Legacy白名單行爲仍可通過單獨的 插件(不推薦)使用。

注意:在此版本中沒有嚴格的部分,由科爾多瓦-CLI創建最新的默認應用 將包括該插件默認。

+0

是不是這個開放的安全有點太多了?爲什麼我必須啓用「不安全內聯」和「不安全事件」? – Erik

+0

我修改了我的答案 - 我們還可以添加'「,這在文檔中是推薦的。 – Keval

+1

刪除cordova-plugin-whitelist並添加白名單解決我的問題,無需任何代碼更改...和白名單是相同的版本..... omg .... – Fxster

相關問題