我最近出现了一个问题。
在我的代码中,我从HTTP服务器加载一些图像:
let urlPicture = "http://images.mydomain.com/" + self.currentUser.pic
imageView.sd_setImageWithURL(NSURL(string: urlPicture))
我没有为我的图像服务器使用HTTPS,因为我觉得它太慢了,但也许我在这一点上错了。 nodejs服务器正在AWS EC2实例中运行,并侦听端口80以管理映像。
由于ATS限制,我在我的Info.plist文件中为我的图片子域声明了一个例外:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>images.mydomain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSRequiresCertificateTransparency</key>
<false/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
</dict>
</dict>
</dict>
最近,我在相同 AWS实例上添加了一个新的子域:https://api.mydomain.com 另一个nodejs服务器侦听443端口并管理API。
由于此次更改,当我调用API时,我的应用程序中的一切都很好,但是当我加载图片时,我面临以下问题:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
有什么想法解决这个问题吗?
答案 0 :(得分:0)
我发现了这个问题。
在服务器端,在同一AWS实例上运行的HTTPS服务器配置了HSTS:
var ONE_YEAR = 31536000000;
app.use(helmet.hsts({
maxAge: ONE_YEAR,
includeSubdomains: true,
force: true
}));
设置为includeSubdomains
的变量true
强制我的其他域images.mydomain.com
在HTTP服务器时使用HTTPS协议。
要解决此问题,只需在HSTS配置中排除其他域:
var ONE_YEAR = 31536000000;
app.use(helmet.hsts({
maxAge: ONE_YEAR,
includeSubdomains: false,
force: true
}));
答案 1 :(得分:-2)
你可以在plist中添加它吗。
2016-06-18T10:39:36.571202+00:00 heroku[slug-compiler]: Slug compilation finshed
2016-06-18T10:39:36.571190+00:00 heroku[slug-compiler]: Slug compilation started
2016-06-18T10:39:40.377632+00:00 heroku[web.1]: Starting process with command `./Perloku`
2016-06-18T10:39:43.357773+00:00 heroku[web.1]: State changed from crashed to starting
2016-06-18T10:39:45.136117+00:00 heroku[web.1]: Starting process with command `./Perloku`
2016-06-18T10:39:49.412546+00:00 heroku[web.1]: State changed from starting to crashed
016-06-18T10:39:53.156458+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=fathomless-oasis-51363.herokuapp.com request_id=b4944cb8-e8a8-4d22-87ae-335dfa4d8701 fwd="89.123.89.141" dyno= connect= service= status=503 bytes=