我正在尝试将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" />
任何想法可能会发生什么? 谢谢!
答案 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中的标签。 我这样做了,现在效果很好。