![](/img/trans.png)
[英]Will my Cordova app rejected? Load external data from json response
[英]Cordova load external content from server
有很多(幾乎)類似的問題,但沒有一個解決了我的問題。
我正在編寫一個cordova 應用程序(目前僅在andoid 和ios 上進行測試),並且想要從我的網絡服務器加載數據(以JSON 格式)。 我使用 jQuerys $.ajax
- 方法。
到目前為止我的代碼:
$.support.cors = true;
var ret = -1;
$.ajax(url, {
traditional: true,
type: 'POST',
url: url,
contentType: 'text/plain',
xhrFields: {
withCredentials: false
},
data: dataString,
success: function (data) {
alert('Data recieved:');
alert(data);
ret = data;
},
error: function (xhr, ajaxOptions, error) {
alert('There was an error');
alert(error);
alert(xhr.status);
}
});
return ret;
這適用於瀏覽器(在最新的 Firefox 中測試),但不適用於應用程序。 該錯誤似乎與跨源頁面加載有關。
我的 config.xml 看起來像這樣:
...
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
...
服務器通過標頭接受 cors 請求(否則它可能無法在瀏覽器中工作):
<?php
header('Access-Control-Allow-Origin: *');
...
但仍然:cordova 不想加載任何東西。 alert(error);
- 行顯示:
SecurityError: Failed to execute 'open' on 'XMLHttpRequest': Refused to connect to ' https://myHost.com/?someparams=foo ' 因為它違反了文檔的內容安全策略
科爾多瓦對此有什么問題?
您可能必須在 index.html 中設置內容安全策略,以允許向托管您的服務的域發出請求。
<meta http-equiv="Content-Security-Policy" content="default-src 'self' <enter-your-domain-here> data: gap: https://ssl.gstatic.com;">
cordova-plugin-whitelist的 readme 有更多的例子。
可以在此處找到有關內容安全策略元標記的更多信息。
基於@toskv
的回答。 檢查您在 Cordova 中的 HTML 頁面是否包含以下元標記: <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
。 默認情況下,元標記由 Cordova 添加並阻止 CORS 工作(如您所見, default-src
僅允許self
)。
使用來自@toskv
的鏈接了解更多信息。
cordova-plugin-whitelist的 readme 有更多的例子。
可以在此處找到有關內容安全策略元標記的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.