Iphone App拒绝Ipv6不兼容

时间:2016-12-22 07:23:56

标签: ios iphone swift networking ipv6

我的应用程序因Ipv6网络不兼容而被拒绝两次。

这个问题已被问过好几次了。大多数解决方案建议避免使用第三方api进行http请求,并且不要硬编码ipaddress。我没有做过。

但是我的服务器必须与ipv6兼容,或者我的http请求有问题。

所以我在这个网站https://services.fingrowthbank.com/上测试了我的服务器http://ipv6-test.com/validate.php,用于Ipv6准备测试。它显示为不兼容。这可能是拒绝的原因吗?

http请求代码

let nsUrlObject: NSURL = NSURL(string: urlAndMethod)!
let nsMutableUrlRequestObj: NSMutableURLRequest = NSMutableURLRequest(URL: nsUrlObject, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: nstime_out_intervalObj)

nsMutableUrlRequestObj.HTTPMethod = “POST"
let bodyData = httpBodyStr
nsMutableUrlRequestObj.HTTPBody =  bodyData.dataUsingEncoding(NSUTF8StringEncoding)

nsMutableUrlRequestObj.setValue(httpHeaderStr, forHTTPHeaderField: "Authorization")

NSURLConnection.sendAsynchronousRequest(nsMutableUrlRequestObj, queue: NSOperationQueue.mainQueue())
{
  (response, data, error) in

   if response == nil
   {
      print(error)
      alert.view.removeFromSuperview()
      Imps_http_client.showAlertView("Could not connect to the server")
    }else{

    }

 }

2 个答案:

答案 0 :(得分:1)

您的代码没有问题。问题是你的服务器端。

根据https://services.fingrowthbank.com/,您的服务器与IPV6不兼容。因为我发现你使用旧的安全加密,即Obsolete Cipher suite。

我在图像中排列。

我测试了样本服务器。 示例: Apple。这个苹果正在使用现代密码套件

Apple server

您的服务器存在问题安全攻击次数13 。这就是苹果拒绝你的应用程序的原因。使用延迟安全性更新您的应用。

解决方案:只需将服务器更新为现代密码套件

enter image description here

答案 1 :(得分:0)

只要您使用域名向服务器发送请求,此网址就完全没问题了。 according to apple If you’re writing a client-side app using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses. If you aren’t connecting by name, you probably should be.

检查您的代码或您正在使用的任何第三方组件,并确保您没有使用IP地址而不是域名发送任何请求。具体来说,请检查Reacahbility代码。如果您使用它,请不要使用函数reachabilityWithAddress,而是使用reachabilityWithHostNamereachabilityForInternetConnection也在使用reachabilityWithAddress - 如果您使用此功能,请进行编辑。

最后,您可以通过使用mac创建ipv6网络并使用该网络测试应用程序来验证您的应用程序的ipv6。