我正在尝试从本地服务器(使用httpd插件)在In App Browser中加载内容。网页来自https,而本地服务器当然加载了http。
我正在Iphone x IOS 12上进行测试。使用Adobe Build
尝试:
<access origin='*' allows-arbitrary-loads-in-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
<edit-config target="NSAllowsArbitraryLoads" file="*-Info.plist" mode="merge">
<true />
</edit-config>
<plugin name="cordova-plugin-transport-security" source="npm" />
错误:
[blocked] The page at https://somewebpage was not allowed to run insecure content from http://127.0.0.1:8080/javascripts/somejsfile.js.
这些都不起作用。有人有建议吗?
答案 0 :(得分:1)
这不是应用程序传输安全问题,它是违反混合内容政策的问题。 解决方案:
对于android:通过将以下代码放入cordova插件的pluginInitialize方法中来禁用混合内容策略:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
final WebSettings settings = ((WebView)this.webView.getView()).getSettings();
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
https://developer.android.com/reference/android/webkit/WebSettings.html#MIXED_CONTENT_ALWAYS_ALLOW)
然后使用以下命令包含本地cordova.js:
<script src="cdvfile://localhost/assets/www/cordova.js"></script>
对于ios:我向文件插件提交了PR,该插件解决了ios上的混合内容问题:apache / cordova-plugin-file#296固定版本位于:https://github.com/guylando/cordova-plugin-file如果您加载远程站点在网络视图上https://example.com,然后它允许使用URL:https://example.com/cdvfile/bundle/www/cordova.js而不是cdvfile://localhost/bundle/www/cordova.js来访问本地文件,从而解决了混合内容问题
使用以下方式包含本地cordova.js:
<script src="/cdvfile/bundle/www/cordova.js"></script>
答案 1 :(得分:1)
另一种不更改浏览器安全设置的android解决方案是使用"https://cdvfile/assets/www/cordova.js"
而不是"cdvfile://localhost/assets/www/cordova.js"
,并将以下行添加到{ {1}}(在cordova文件插件中):
remapUri
这将照常加载文件,并且不会导致网络视图阻止请求。
请参见PR https://github.com/apache/cordova-plugin-file/pull/322
答案 2 :(得分:0)
添加到 config.xml :
<allow-navigation href="*" />
<access origin="*" />"
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
并添加到 index.html 内容安全政策
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'; img-src * data: 'unsafe-inline'; connect-src * 'unsafe-inline'; frame-src *;">
<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file:; style-src 'self' 'unsafe-inline' *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *">
并且不要忘记将此插件cordova-plugin-whitelist添加到您的项目