从 UIWebView 在 Safari 中打开 link
Open link in Safari from UIWebView
我想做的是在 Safari 中打开一个网站,方法是让用户单击显示在我的 UIWebView 中的 link。
我首先通读了 question/answers:
之后我执行了以下操作:
class HomeInfoView: UIViewController, UIWebViewDelegate{
override func viewDidLoad() {
super.viewDidLoad()
let localfilePath = NSBundle.mainBundle().URLForResource("homeInfo", withExtension: "html");
let myRequest = NSURLRequest(URL: localfilePath!);
WebViewer.loadRequest(myRequest);
WebViewer.scrollView.bounces = false
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let url = request.URL where navigationType == UIWebViewNavigationType.LinkClicked {
UIApplication.sharedApplication().openURL(url)
return false
}
return true
}
然而,当我尝试使用 link 时,我仍然遇到错误
"App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file."
我想我已经完成了 90%,但我不确定如何编辑我的 .plist 以允许例外。或者如果还有其他我错过的东西。
(我会把这个作为评论添加到原来的 post 但我的排名还不够高)
您需要在 info.plist
中授予对该特定域的权限:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
你 plist 中的这个信息基本上在你的应用程序中设置了一个例外。它允许您访问 testdomain.com
域(插入您尝试访问的任何域)。它允许您访问所有子域,然后设置最低 TLS 版本以帮助确保您连接到的站点是您想要的站点。
或者您可以简单地允许访问所有http 网站,不推荐这样做。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
不推荐这样做,因为它允许您的应用访问任何 http:// 域,这可能是一个安全问题,因为它会使您的应用容易受到 man-in-the-middle 攻击。
查看 Apple 的文档以了解更多信息。
https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33
我想做的是在 Safari 中打开一个网站,方法是让用户单击显示在我的 UIWebView 中的 link。
我首先通读了 question/answers:
之后我执行了以下操作:
class HomeInfoView: UIViewController, UIWebViewDelegate{
override func viewDidLoad() {
super.viewDidLoad()
let localfilePath = NSBundle.mainBundle().URLForResource("homeInfo", withExtension: "html");
let myRequest = NSURLRequest(URL: localfilePath!);
WebViewer.loadRequest(myRequest);
WebViewer.scrollView.bounces = false
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let url = request.URL where navigationType == UIWebViewNavigationType.LinkClicked {
UIApplication.sharedApplication().openURL(url)
return false
}
return true
}
然而,当我尝试使用 link 时,我仍然遇到错误
"App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file."
我想我已经完成了 90%,但我不确定如何编辑我的 .plist 以允许例外。或者如果还有其他我错过的东西。
(我会把这个作为评论添加到原来的 post 但我的排名还不够高)
您需要在 info.plist
中授予对该特定域的权限:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
你 plist 中的这个信息基本上在你的应用程序中设置了一个例外。它允许您访问 testdomain.com
域(插入您尝试访问的任何域)。它允许您访问所有子域,然后设置最低 TLS 版本以帮助确保您连接到的站点是您想要的站点。
或者您可以简单地允许访问所有http 网站,不推荐这样做。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
不推荐这样做,因为它允许您的应用访问任何 http:// 域,这可能是一个安全问题,因为它会使您的应用容易受到 man-in-the-middle 攻击。
查看 Apple 的文档以了解更多信息。 https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33