我制作了一个 javascript 云应用程序,该应用程序在我的 iPad 应用程序的 webview 中的网页上运行,该应用程序通过 WebSocket 连接进行通信,但它仅在我在我的 http 站点上而不是 https 上时才有效,否则我会收到CFNetwork SSLHandshake failed (-9806)错误Xcode 和网站上说握手期间超时。
这是因为 iPad 上的网络服务器是在 HTTP 而不是 HTTPS 上运行的吗?
JAVASCRIPT 云应用
当连接到 iPad 上的 Web 服务器时,云中的这一部分适用于 HTTP。
var protocol = "ws";
if (this.useSecureConnection)
protocol = "wss";
var url = protocol+'://localhost:'+this.port+'/service';
this.connection = new WebSocket(url);
Xcode iOS iPad 应用程序 (Objective-C)
我认为这是问题所在,所以我尝试启用 HTTPS,但我不确定要为“sslIdentityAndCertificates”方法创建什么。
- (BOOL)isSecureServer
{
HTTPLogTrace();
// Override me to create an https server...
return YES;
}
/**
* This method is expected to returns an array appropriate for use in kCFStreamSSLCertificates SSL Settings.
* It should be an array of SecCertificateRefs except for the first element in the array, which is a SecIdentityRef.
**/
- (NSArray *)sslIdentityAndCertificates
{
HTTPLogTrace();
return nil;
}
我看到的其他一些帖子使用的 API 仅在 Mac 上可用,在 iOS 上不可用。
我也尝试了几种 ATS 权限组合。所有这些都导致 HTTPS 不允许 WebSocket 连接。
任何帮助是极大的赞赏!:)