2017-05-19 10 views
1

UIWebView을로드하는 데 문제가 있습니다. https 요청을 사용합니다. 관련 답변을 읽었지만 더 혼란 스러웠습니다. 내 코드는 다음과 같습니다. 링크는 아래에서 다른 페이지로 리디렉션됩니다.UIWebView에서 https를로드 할 수 없습니다.

class PartnersWebViewControlerViewController: UIViewController, NSURLConnectionDelegate, UIWebViewDelegate { 

    @IBOutlet weak var admitadWebView: UIWebView! 

    let url = "https://ad.admitad.com/g/54tjzvqfv92260a476c4ffa09d8e84/subid/26/" 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     admitadWebView.delegate = self 
     let requestURL = URL(string:url) 
     let request = URLRequest(url: requestURL!) 
     admitadWebView.loadRequest(request) 

    } 
} 

그러나 모든 UIWebView to view self signed websites (No private api, not NSURLConnection) - is it possible?

나는 다음과 같은 방법으로

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

    let urlConnection: NSURLConnection = NSURLConnection(request: request as URLRequest, delegate: self)! 
     urlConnection.start() 
    return true 
} 

func connection(_ connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: URLProtectionSpace) -> Bool { 
    return true 
} 

func connection(_ connection: NSURLConnection, didReceive challenge: URLAuthenticationChallenge) { 
    let host = "www.ad.admitad.com" 

    if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust && 
     challenge.protectionSpace.host == host { 
     let credential = URLCredential(trust: challenge.protectionSpace.serverTrust!) 
     challenge.sender!.use(credential, for: challenge) 
    } else { 
     challenge.sender!.performDefaultHandling!(for: challenge) 
    } 
} 
에서 이러한 프로토콜 NSURLConnectionDelegate, UIWebViewDelegate을 준수하려고 내가이 답변의 도움으로 https http에를 변경할 때, 미세로드

하지만 여전히 흰 화면이 있고 아무 것도 인쇄되지 않습니다.

도움이 되시길 바랍니다. 처음으로 그런 문제에 봉착했습니다. 제 질문이 어리석은 일이라면 유감입니다.

것은 내가 IOS에게 10.3 UPD를 사용하고 있습니다 : 장치에서 실행할 때이 문제가 발생합니다 (아이폰 6)

답변

0

는 지금까지 내가 아는 한, 애플은 당신이 보안을 위해 HTTPS를 사용할 수 있습니다. HTTP 웹 사이트에 액세스하려면 Info.plist (지원 파일 폴더 내부)를 변경해야합니다. 여기에 새 키를 추가해야합니다.

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>yourwebsite.com</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
      <key>otherdomain.com</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSExceptionAllowsInsecureHTTPLoads</key> 
       <true/> 
      </dict> 
     </dict> 
    </dict> 

"yourwebsite.com"을 액세스하려는 웹 사이트의 도메인으로 바꿉니다. 그러면 xcode는 해당 웹 사이트에 액세스하려고 함을 알게되며 보안되지 않은 HTTP임을 알게됩니다. 다른 도메인에도 액세스하려는 경우 위의 "otherdomain"과 같이 .plist 형식의 사전에 키를 추가 할 수 있습니다. (HTTP : //)

0

참조 오류 로그

는 "앱 운송 보안은 일반 텍스트 HTTP를 차단했습니다있을 것입니다. 자원 부하가 불안 때문에 임시 예외는 앱의 Info.plist 파일을 통해 구성 할 수 있습니다. "

당신의 Info.plist 여기에 enter image description here

enter image description here

페이지의 스크린 샷이 추가

+0

상태가 이미 변경되었지만 http가 아닌 https에 문제가 있습니다. – dand1

+0

내 응용 프로그램에서로드 중입니다. 귀하의 응용 프로그램에 로딩되지 않으면 URL에 문제가 없습니다. 당신은 다른 뭔가 잘못했을 수도 있습니다. – ChanWarde

+0

오, 그래, 나는 시뮬레이터에 착수하려고했는데, 효과가 있었다. 그러나 문제는 내 장치에 남아 있습니다. – dand1