Ios WKWebview[警告][已阻止]页面位于https://www.myurl.com 不允许显示mycustomscheme://?path=somepath中的不安全内容

Ios WKWebview[警告][已阻止]页面位于https://www.myurl.com 不允许显示mycustomscheme://?path=somepath中的不安全内容,ios,wkwebview,content-security-policy,Ios,Wkwebview,Content Security Policy,我最近在我的混合应用程序中将我的UIWebview替换为WKWebview。我正在使用一个自定义方案从应用程序的本机部分加载图像,正如苹果推荐的: 我正在从一个类似于mycustomscheme://?path=somepath 我添加了内容安全策略头以允许混合内容,看起来是这样的(删除了不相关的部分): 这适用于大多数设备,允许对mycustomscheme的请求通过,如果有任何内容被阻止,则向myreporturl报告。但是,在某些设备上,自定义请求因以下错误而被阻止: [警告][阻止]页

我最近在我的混合应用程序中将我的
UIWebview
替换为
WKWebview
。我正在使用一个自定义方案从应用程序的本机部分加载图像,正如苹果推荐的:

我正在从一个类似于
mycustomscheme://?path=somepath

我添加了内容安全策略头以允许混合内容,看起来是这样的(删除了不相关的部分):

这适用于大多数设备,允许对
mycustomscheme
的请求通过,如果有任何内容被阻止,则向
myreporturl
报告。但是,在某些设备上,自定义请求因以下错误而被阻止:
[警告][阻止]页面位于https://www.myurl.com 不允许显示mycustomscheme://?path=somepath
中的不安全内容,并且没有向myreporturl发送报告,就好像根本没有加载标题一样

我已经确认确实发送了标头,并且有问题的设备正在运行最新的iOS(12.1.4)


任何关于如何防止我的自定义请求被阻止的建议都将不胜感激

原因:自iOS 9以来,iOS将只允许您的应用程序与默认情况下实现最佳实践安全性的服务器通信。必须在Info.plist中设置值以启用与不安全服务器的通信

解决方案:在info.plist中添加以下代码以信任您的域

<key>NSAppTransportSecurity</key>
 <dict>
 <key>NSExceptionDomains</key>
 <dict>
  <key>www.myurl.com</key>
  <dict>       
   <key>NSExceptionRequiresForwardSecrecy</key>
   <false/>
   <key>NSExceptionAllowsInsecureHTTPLoads</key>
   <true/>
   <key>NSIncludesSubdomains</key>
   <true/>
 </dict>
</dict>
NSAppTransportSecurity
NSExceptionDomains
www.myurl.com
NSExceptionRequiresForwardSecretary
N异常低安全Http负载
n包括多个域
试试这个:

在info.plist文件中添加以下行:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>mycustomscheme</string>
</array>
LSApplicationQueriesSchemes
mycustomscheme

确保将
mycustomscheme
更改为您自己的方案

请尝试以下加载图像策略:

img-src 'self' 'unsafe-inline' 'unsafe-eval' data: http: https: mycustomscheme: filesystem: file:;

它的https和http问题确保您的所有内容都是https:。 使用多个网站资源相互混合。
尽量不要做CORS

我试过了,但还是被挡了。另外,我的问题是JS与应用程序本机部分之间的通信,因此我不希望它被NSAppTransportSecurity阻止。谢谢,但仍然会被阻止。LSApplicationQueriesSchemes用于要打开的URL。我不是想打开一个url,我是想传递一个来自本地代码的图像。我想我在最初的帖子中解释得不够好。我正在尝试将图像从应用程序本身(应用程序的本机部分)加载到WKWebview中运行的JS中,正如苹果在上面的链接中所建议的那样。使用https是没有意义的。天哪,这似乎解决了问题。我不能说我明白为什么,但我接受了!非常感谢。欢迎光临!我很高兴这有帮助。此链接更详细地解释了img src的选项。祝你好运我也有同样的问题,但是加载通过
头部
中的
链接
元素引用的本地样式表。对于
样式src
,它的工作方式有什么不同吗?
img-src 'self' 'unsafe-inline' 'unsafe-eval' data: http: https: mycustomscheme: filesystem: file:;