【问题标题】:How to only allow certain URLs in app如何只允许应用程序中的某些 URL
【发布时间】:2016-07-15 19:40:38
【问题描述】:

有没有办法让应用只加载某些 URL?我在想 App Transport Security 设置中有类似 Exception Domains 的东西,除了这不是关于允许从某个 URL 进行任意加载,而是只允许某些 URL 并阻止所有其他 URL,无论是否为 HTTPS/HTTP。谢谢

【问题讨论】:

  • 这些 URL 是如何加载的?
  • 我在应用程序中有一个指向 www.mysite.com 的 web 视图,我不希望用户通过以下链接浏览离开它。这是一个安全风险。
  • 如果是UIWebView,我相信您的委托会在页面加载开始时被调用 (webView:shouldStartLoadWithRequest:navigationType:)。您可以返回是否要执行请求。
  • 对于 WKWebViews,有一个类似的 WKNavigationDelegate,其中包括 webView(_:decidePolicyForNavigationAction:decisionHandler:)

标签: ios swift


【解决方案1】:

你可以在你的 AppDelegate 中使用这样的东西:

optional func application(_ app: UIApplication,
              openURL url: NSURL,
              options options: [String : AnyObject]) -> Bool
{
    //Return true or false depending on if you want 
    //this application to open the URL.
}

在您提到的 cmets 中,您在单个 UIWebView 中使用了这一切。在这种情况下,您可以执行以下操作:

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

    return handleRequest(URL)
}

@available(iOS 8.0, *)
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
    let request = navigationAction.request;
    let url = request.URL

    if(handleRequest(url))
    {
        decisionHandler(WKNavigationActionPolicy.Allow)
    }
    else
    {
        decisionHandler(WKNavigationActionPolicy.Cancel)
    }
}

那段代码同时处理 UIWebView 和 WKWebView。

【讨论】:

  • 我没有说明我正在寻找一个快速的解决方案,当我转换你的答案时它不会编译:这就是我得到的,但它没有任何意义
  • func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject) -> Bool { var params: String = url.absoluteString().substringFromIndex(url.absoluteString() .startIndex.advancedBy(url.absoluteString().rangeOfString("://").location + 3)) //根据您是否要加载页面,从这里返回真或假。返回真}
  • 那么 Swift 没有应用范围的实现吗?我真的不希望该应用访问任何其他网站。
  • 好的,如果我想允许 2 或 3 个 URL,可以吗?对不起,我正在改变我的问题..
  • 那些 WebView 代理可以让你做任何你想做的事情。搜索它提供给您的 URL,然后决定是否允许访问该 URL。问题解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多