真的是一个古怪的问题,它一直都在工作,但是当我们尝试将ix 5的iphone 5s中的跨平台应用程序构建时,图像不会出现,图像也不会出现api到img src工作,特别是每当我尝试调用以下代码时。
<img ng-if="eachItem.Image.length > 0"
src="https://<name hidden>.s3.amazonaws.com/images/{{eachItem.Image}}"
fallback-src="images/no_foto.jpg" alt="" class="spac-bdr">
但有趣的是,ios 8中的一切都运行正常。所有的apis都工作正常。只是图像不会加载。
但是使用相同的代码构建的Android应用程序没有这样的问题。它似乎影响仅在具有ios 9 OS的设备上运行的应用程序。
任何想法如何克服这个问题?
答案 0 :(得分:2)
认为尝试从其他服务器访问图像时存在一些问题。虽然api指向不同的api。以下对plist的补充帮助我解决了这个问题。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
答案 1 :(得分:2)
正如我在@Kailas的答案中所说,他发布的方式不是推荐方式。请读给大家:考虑应用程序的安全性!
虽然我已经告诉并链接了我对iOS 9 Ajax / ATS问题的详细解答,但由于完整性,我将在这里做一个完整的引用。
据我了解整个ATS( App Transport Security - iOS 9 ),来自area28的推荐方法不应该是您在应用程序中使用的方法。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
这将允许对每个域的所有外部请求绝对不是您应该使用它的方式。在我看来,您应该在<dict>
中定义一个新info.plist
并将此代码添加到其中(编辑info.plist
您可以使用普通文本编辑器,例如崇高文本等):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>domain.tld</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
这只允许对您指定的域的请求。描述的方式是apple introduced on the WWDC 2015。正如您在屏幕截图中看到的那样,它是苹果希望用户使用它的方式。
如果您还没有指定任何内容,那么您将获得
无法加载包含错误的网页:无法加载资源 因为App Transport Security策略要求使用安全 连接。
答案 2 :(得分:1)
确保config.xml文件中的路径来源具有提取图像所需的域(例如,我的图像是从AWS S3提供的,因此我需要以下这一行)
<access origin="*s3.amazonaws.com*" subdomains="true" />
我在从xCode构建之前将其添加到.plist文件中解决了我的问题。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
答案 3 :(得分:0)
如果您正在使用cordova cli,则必须手动对config.xml
,plugin.xml
和info.plist
文件进行更改。从platforms/ios/ios.json
文件中删除配置。这将重建每个cordova构建的所有以前的文件。
我在从图形api加载图像时遇到问题,所以我从ios.json文件中删除了它。
{
"xml": "<access origin=\"https://graph.facebook.com\" />",
"count": 1
}