2015-10-13 167 views
1

我在我的科爾多瓦應用程序中有傳出請求的一些問題。 既不ajax請求的工作,也不包括這樣的圖像:<img src="http://www.bing.com/s/a/hpc14.png">ajax請求問題(科爾多瓦)

config.xml文件:

<plugin name="cordova-plugin-whitelist" version="1" /> 

<access origin="*" /> 

<allow-navigation href="*" /> 
<allow-intent href="*" /> 

<content src="index.html" /> 

app.js:

$.ajax({ 
    url: "http://domain.xyz", 
    type: "post", 
    data: { "uuid": device.uuid }, 
    dataType: "json", 
    success: function(json){ 
     alert('it works'); 
    }, 
    error: function(e){ 
     alert("status: "+e.status); 
    } 
}); 

這將返回送花兒給人status: 0

你能幫助我嗎?

+0

你可以告訴我們你正在使用哪個版本的Cordova,你在ajax請求中試過了''''cordova -version''' –

+0

你試過了'dataType:「jsonp」嗎? –

+0

@Simon我正在使用版本5.3.3 – moerphy

回答

2

如果您使用的是Cordova 5,並且設備和服務器可以互相看到,您可能必須通過內容安全策略啓用此功能。請參閱Cordova Whitelist Plugin。你需要考慮增加一元標記

示例配置會是什麼樣子:

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

根據還有什麼你的應用程序或不這樣做,你可能不需要在上面的所有其他選項,雖然一些Ajax和模板框架將會。上述工作適用於使用JQuery和Handlebars的Cordova 5應用程序。

此外,對於Xcode的7/iOS版9,你將需要調整ATS設置,以允許非HTTPS後端連接:

這裏的變化,以您的應用程序的信息的.plist的工作示例:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

而且這裏有一個腳本,你可以作爲預編譯鉤使用的iOS自動做到這一點:

#!/bin/bash 
echo "Adjusting plist for App Transport Security exception." val=$(/usr/libexec/plistbuddy -c "add NSAppTransportSecurity:NSAllowsArbitraryLoads bool true" platforms/ios/PROJECTNAME/PROJECTNAME-Info.plist 2>/dev/null) echo "Done" 

剛換出PROJECTNAME爲您的項目名稱。

+0

令人驚歎!有用。非常感謝 – moerphy

0

@moerphy,
兩個以前的答案都是正確的。有三(3)個項目需要設置新的安全策略。但是,如果你設置你的版本低於4.0.0,那麼你不必擔心安全策略。三(3)項:

  • white-list
  • white-list plugin
  • CSP

而且,我希望你的例子就是這樣。將APP資源(圖像,css文件等)存儲在刪除服務器上是不好的做法。存儲您在本地的所有資產。

無論如何,你想閱讀。Top Mistakes by Developers new to Cordova/Phonegap
請務必閱讀:

  • 不設置 「的PhoneGap版」 爲你的編譯
  • 不在config.xml中添加新的「白名單」,「白名單插件」參數和「內容安全策略」
    1. 您需要現在從NPM獲取插件。

我引用6.,所以我可以建議你看看:

使用CLI的版本,如果你不爲你的平臺或'PhoneGap的指定版本如果您沒有在config.xml中設置phonegap版本,那麼創建'',您將獲得最新版本。如果你幸運的話,你的程序就能按預期工作。如果你不幸運,你會得到一系列級聯錯誤。