开发者社区 问答 正文

iOS海外OSS无法上传,版本v2.10.10

  • 国内正常上传
  • 使用OSS时有一个海外澳洲用户,无法上传图片,报“The resource could not be loaded because the App Transport Security policy requires the use of a secure connection”;查看后发现已设置
<key>NSAllowsArbitraryLoads</key>
<true/>  
  • 在进行各种查询后发现还设置了NSAllowsArbitraryLoadsInWebContent,在删除NSAllowsArbitraryLoadsInWebContent后,海外可正常上传,
<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
		<key>NSAllowsArbitraryLoadsInWebContent</key>
		<true/>
</dict>

为什么会NSAllowsArbitraryLoadsInWebContent影响海外用户上传?

展开
收起
1223538020084358 2021-08-05 15:56:05 553 分享 版权
阿里云 AI 助理回答

App Transport Security (ATS) 是苹果在iOS 9及之后版本中引入的一项安全策略,旨在强制应用通过HTTPS进行网络通信,以提高数据传输的安全性。您提到的两个键值:

  1. NSAllowsArbitraryLoads:这个设置允许您的应用不遵循ATS的限制,即允许任意的HTTP和HTTPS请求。这会降低安全性,但可能解决了一些兼容性问题。

  2. NSAllowsArbitraryLoadsInWebContent:这个设置是针对应用内嵌的Web内容(如WKWebView或UIWebView)特别指定的。它允许这些Web内容不受ATS限制地加载资源,即使应用整体上可能启用了更严格的安全策略。这意味着对于Web视图中的内容,仍然要求使用安全连接,而不能随意加载非HTTPS资源。

海外用户上传图片时遇到的问题可能与以下因素有关:

  • 区域网络差异:不同地区的网络环境、ISP政策或中间网络设备可能对HTTPS连接有特定的要求或限制。设置NSAllowsArbitraryLoadsInWebContent可能导致某些地区或网络环境下,客户端尝试通过不安全的连接上传数据,从而被拒绝或报错。

  • HTTPS兼容性问题:OSS服务端默认支持HTTPS,并且推荐所有客户端通过HTTPS进行通信以保证数据安全。如果客户端配置不当,可能会导致HTTPS握手失败或者连接不被信任,尤其是在国际网络环境中,路径上的网络设备或代理服务器可能对SSL/TLS协议版本有更严格的要求。

删除NSAllowsArbitraryLoadsInWebContent后,实质上是让应用内的Web内容也遵循了更严格的安全策略,这可能是海外用户能够成功上传的原因之一。因为这样确保了所有的网络请求都尽可能地通过安全连接进行,避免了因部分网络环境对安全策略的严格要求而导致的失败。

为了解决这个问题同时保持应用的安全性,建议采取以下措施:

  • 仅对需要的域名放宽限制:使用NSExceptionDomains来为特定的域名(如您的OSS存储桶域名)设置例外,允许其通过HTTP而非强制HTTPS,而不是全局开启NSAllowsArbitraryLoads

  • 升级OSS SDK:确保使用的阿里云OSS SDK是最新的,以便获得最佳的HTTPS支持和兼容性。

  • 检查OSS Bucket的HTTPS配置:确认OSS Bucket的SSL证书有效且支持全球访问,没有地域限制。

  • 优化网络配置:考虑是否有CDN或其他网络加速服务可以改善跨境访问的稳定性和速度,尤其是对于海外用户。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答