我正在尝试通过Apple Transport Security将我的应用程序连接到位于152.111.198.244的http服务器。我没有尝试过任何工作。
将NSAllowsArbitraryLoads键添加到我项目的info.plist文件仍然不允许我的应用程序连接到此特定IP地址152.111.198.244 我已经浏览了Apple Transport Security上的technote。我安装了OSX 10.11,尝试使用
查找可能适用于URL的设置nscurl --ats-diagnostics http://152.111.198.244
和
nscurl --ats-diagnostics http://152.111.198.244/publications/
在终端。 nscurl尝试失败的所有设置。我查看了类似问题NSAllowsArbitraryLoads not working和NSExceptionAllowsInsecureHTTPLoads not working for ip addresses,但未找到解决方案。我也看了here并且提出的NSExceptionMinimumTLSVersion密钥没有用。
我开始认为某处可能存在错误,或者我错过了什么。 IP地址是Apple Transport Security的问题吗?为什么?有没有办法让IP地址通过ATS工作?
更新:我添加了特定的IP地址,这给我带来了麻烦。希望有人能够复制我正在谈论的内容。
更新:我将此记录为雷达中的错误,我收到一条消息,说它是重复的。与此同时,此问题中提到的IP地址现在具有域名http://3d.media24.com/,但遗憾的是它还没有解决问题。
更新:我将答案标记为正确。似乎苹果用XCode7.1解决了这个问题,并且Apple Transport Security的密钥有所改变。相关网站也已针对https连接进行了更新。
答案 0 :(得分:1)
我可以使用Xcode 7.1和Simulator 9.1下的Info.plist中的“允许任意加载”访问该网址http://152.111.198.244:
截图:
我使用了以下代码:
let url = NSURL(string: "http://152.111.198.244")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) -> Void in
print("response \(response!)")
}
task.resume()
以下是我收到的回复:
response <NSHTTPURLResponse: 0x7fe1a2421f80> { URL: http://152.111.198.244/auth/login } { status code: 200, headers {
"Cache-Control" = "no-cache";
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 1138;
"Content-Type" = "text/html; charset=UTF-8";
Date = "Fri, 23 Oct 2015 09:33:59 GMT";
"Keep-Alive" = "timeout=5, max=98";
Server = "Apache/2.4.7 (Ubuntu)";
"Set-Cookie" = "XSRF-TOKEN=eyJpdiI6IldBOWYxcDk3SEtMekJ3YTNSUm9mYUE9PSIsInZhbHVlIjoiTFBcL3RGWW10cjlONFFkeXY1ZDA4SWRkSURIYlFsOGE3QkFEV3hRNTVwRFJuWSt5SXN3OU55Sng4elduMHd1T1duV0VFQ1o4dDVjeDJTZGRFeXJxMjN3PT0iLCJtYWMiOiJiZjNmOTg0NTZmY2RkMGQzNmE2YWEyNjJiNzA1MDlmZjIwM2M3NWYyNjYwZjM5N2Q3ZTgxNjRjNzAzMGYzYmMzIn0%3D; expires=Fri, 23-Oct-2015 11:33:59 GMT; Max-Age=7200; path=/, laravel_session=eyJpdiI6InR5OSs3cmpObVRBbFhORnVJQjRvWFE9PSIsInZhbHVlIjoiSTJ2bk41RVVLZUR1a0xKbFwvalZXQWpsNEtWeHppUVpYVUlRM1ZjQXc5aDJxT1wvXC9uYkViaTQ0SCtGNTMrdmtiQXFOd0VJTFwvM0ZCbmFHZk5MWlwvZ3BBUT09IiwibWFjIjoiYjRmNzcxY2Q5NDFlZjYzZTI1YzU2YzI0YTkxM2M0NDg0MGY2YThiODIxOGZjOTgxYjNmM2FlZTkzZGMyZTdjOCJ9; expires=Fri, 23-Oct-2015 11:33:59 GMT; Max-Age=7200; path=/; httponly";
Vary = "Accept-Encoding";
"X-Powered-By" = "PHP/5.5.9-1ubuntu4.11";
} }
我也可以使用指定域 3d.media24.com 进行连接,但不能使用例外域进行152.111.198.244的数字地址连接。
截图:
我的结果与Apple Technote on App Transport Security中的例外域定义一致:
指定域的例外字典。密钥的名称是域的名称 - 例如,www.apple.com。
答案 1 :(得分:0)
可以在App Transport Security Settings下面添加一些有用的字段:
NSIncludesSubdomains
NSExceptionAllowInsecureHTTPLoads
NSExceptionRequiresForwardSecrecy
NSExceptionMinimumTLSVersion
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionMinimumTLSVersion
NSThirdPartyExceptionRequiresForwardSecrecy
希望对你有所帮助!