Cordova白名单iOS 10 SSL错误:无法加载资源:发生SSL错误并且无法建立与服务器的安全连接

时间:2016-09-15 00:27:30

标签: ios cordova vimeo whitelist

我正在尝试将ArrayBuffer发送到

https://1511921174.cloud.vimeo.com/upload?ticket_id=xxxxxxxxxx&video_file_id=xxxxxx&signature=xxxxxxxx=1%22

在iOS 10中没有任何事情发生。我必须有一个白名单错误。我根据cordova-plugin-whitelist文档将* .vimeo.com和* .cloud.vimeo.com列入白名单。在iOS 9和Android上一切正常。

<access origin="http://*.vimeo.com" subdomains="true" />
<access origin="https://*.vimeo.com" subdomains="true" />
<access origin="http://*.cloud.vimeo.com" subdomains="true" />
<access origin="https://*.cloud.vimeo.com" subdomains="true" />

任何想法可能会发生什么? 谢谢!

3 个答案:

答案 0 :(得分:4)

看起来这不是白名单,而是App Transport Security问题。

我使用iOS 10将视频上传到Vimeo。看起来Vimeo的SSL证书可能存在问题。他们可能使用旧的TLS版本。当我关闭了plist中的App Transport Security时,它刚刚起作用:

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

因此,如果不关闭所有内容,我最终只在vimeo.com的plist中添加以下代码:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>vimeo.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>
    </dict>
</dict>

我希望能帮助那里的任何人。

答案 1 :(得分:1)

我不得不对iOS 10(see here)的Content-Security-Policy元标记进行调整,因此您可能还需要添加/更新它,例如。

<meta http-equiv="Content-Security-Policy" content="default-src 'self' gap: file: https://*.cloud.vimeo.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:; media-src *">

答案 2 :(得分:0)

在我使用config.xml中的edit-config标记添加Info.Plist条目之前。 但是,由于一个不明原因,当我覆盖NsAppTransportSecurity条目时,它不起作用。

经过一番研究,我认为cordova-plugin-whiteelist也正在翻译&#34; access&#34;和&#34;允许导航&#34;自2015年10月以来,在config.xml中标记到Info.Plist文件中的NsAppTransportSecurity条目(source)。

因此插件阻止我的config.xml中的edit-config标记覆盖此条目。 根据Cordova的this doc,您可以在&#34; access&#34;中设置传输安全选项。和&#34;允许导航&#34; config.xml中的标签。 我这样做了,现在效果很好。