ios9 HTTP加载失败kCFStreamErrorDomainSSL(-9802)

时间:2016-06-18 09:56:18

标签: ios node.js swift amazon-ec2

我最近出现了一个问题。

在我的代码中,我从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)

有什么想法解决这个问题吗?

2 个答案:

答案 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=