博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HybridApp iOS ATS解决方案
阅读量:6792 次
发布时间:2019-06-26

本文共 2189 字,大约阅读时间需要 7 分钟。

 

苹果在最近的一次WWDC上提出将在2017年1月1日起强制我们用HTTPS,否则提交App可能会被拒绝。很多ios应用的已经放出支持HTTPS的SDK了。本文主要针对混合式IOS应用提供相关的解决方案,欢迎探讨。

 

info.plist中NSAppTransportSecurity字典结构

NSAppTransportSecurity : Dictionary {    NSAllowsArbitraryLoads : Boolean    // 默认开启ATS,设置为NO关闭ATS,需审核时说明  NSAllowsArbitraryLoadsForMedia : Boolean //iOS10新特性,设置为YES使用AVFoundation播放在线,视频不受ATS限制,需审核时说明原因  NSAllowsArbitraryLoadsInWebContent : Boolean // iOS10新特性,设置为YES使用UIWebView或,WKWebView不受ATS限制,需审核时说明原因    NSAllowsLocalNetworking : Boolean // iOS10新特性,设置为YES本地网络请求不受ATS限制    NSExceptionDomains : Dictionary { // 配置特定域名的ATS访问属性         
: Dictionary { // 特定域名,注意不支持IP地址 NSIncludesSubdomains : Boolean // 设置为YES该域名的ATS配置适用于子域名 NSExceptionAllowsInsecureHTTPLoads : Boolean // 设置为YES该域名可通过HTTP访问,需审核时说明原因 NSExceptionMinimumTLSVersion : String // 该域名支持的TLS最低版本,需审核时说明原因 NSExceptionRequiresForwardSecrecy : Boolean // 默认值为YES,置为NO访问该域名时可以不支持perfect forward secrecy (PFS) NSRequiresCertificateTransparency : Boolean // 设置为YES该域名服务器需要有效的       SCT(signed Certificate timestamps) } }}

 

注:关于NSAppTransportSecurity的配置,可通过/usr/bin/nscurl(OS X v10.11及以上系统支持)工具模拟进行ATS网络连接状况诊断,命令如下:

/usr/bin/nscurl --ats-diagnostics --verbose URL

命令会模拟ATS属性不同配置场景的连接状况,可根据输出内容参考配置。

 

关于HTTPS,大概分两种类型的证书,一类是CA机构认证的,另一类是自签名的,比较典型的就是12306网站了

1 采用CA机构认证的SSL证书:

  Info.plist —— 无需改动

  代码 —— js通过https进行请求数据,无需改动代码。

2 采用自签名SSL证书:

  Info.plist —— 修改如下:

NSExceptionDomains
域名
NSTemporaryExceptionAllowsInsecureHTTPLoads
  

 

由于cordova项目的网络请求基本都通过UiWebView的ajax去访问,而UiWebView的ajax请求不支持客户端证书验证,如若需引入证书与服务端校验需要自定义cordova原生插件支持,故这里提供两种方式去实现。

 

1 基于UiWebView的ajax请求(该方式客户端并不校验服务端证书内容):

 

(a)AppDelegate.m新增:

 

(b)在js中直接通过ajax请求https即可

 

2 基于原生NSUrlSession的网络请求(需导入证书,网络请求时会验证服务端证书是否可信):

 

(a)导入NativeHttps cordova插件

  

  在Config.xml中引用该插件内容:

  

  导入证书,修改NativeHttps.m中的pluginInitialize方法,将证书添加到trustedCerArr数组中

  

(b)在调用ajax的公共js中新增插件方法调用原生get/post请求:

  

 

(c)在对应页面调用原生方法(get/post一致):

  

 

参考文章:

  https://onevcat.com/2016/06/ios-10-ats/ (关于 iOS 10 中 ATS 的问题)

  https://github.com/ChenYilong/iOS9AdaptationTips

转载地址:http://xgago.baihongyu.com/

你可能感兴趣的文章
LayaAir 自旋转的小球跟随鼠标移动
查看>>
linux nginx 指定目录不可执行php文件
查看>>
django环境搭建
查看>>
共享 iOS沙盒文件管理
查看>>
MIME
查看>>
CMPopTipView
查看>>
windows系统下安装虚拟机-mac系统-视频教程
查看>>
spring ContentNegotiatingViewResolver---负责调用不同的j
查看>>
嵌入式Linux C编程 03
查看>>
华为聚簇表聚簇索引原理
查看>>
数据挖掘笔记
查看>>
Nginx配置性能优化
查看>>
Ubuntu下安装numpy and matplotlib
查看>>
Spring 统一管理输出
查看>>
LEXUS OPENCART 自适应主题模板 ABC-0019-01 HIGHLIGHTED FEA
查看>>
设置ListView页眉注意事项
查看>>
ubuntu 更新出错
查看>>
nginx学习笔记(8)虚拟主机名---转载
查看>>
elasticsearch6 java 操作手册
查看>>
[LeetCode] Symmetric Tree
查看>>