无法让 WebKit 显示网页



我正在尝试弄清楚如何在我的IOS应用程序中显示网页。 我试图仔细跟踪我能找到的信息。 这是我正在使用的:

@implementation FirstViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.productURL = @"http://google.com/";
    NSURL *url = [NSURL URLWithString:self.productURL];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    _webView = [[WKWebView alloc] initWithFrame:self.view.frame];
    [_webView loadRequest:request];
    _webView.frame = CGRectMake(self.view.frame.origin.x+50,self.view.frame.origin.y+50, self.view.frame.size.width-100, self.view.frame.size.height-200);
    printf("nReady to add the Subview");
    self.view.backgroundColor = [UIColor blueColor];
    [self.view addSubview:_webView];
    printf("nSubView has been added");
 }
@end

框架在上面是偏移的,所以我可以给它着色,并看到子视图将定位在那里。 据我了解,网页应该出现在子视图中,但我只是得到一个空白页。

我还在我的Info.plist中添加了NSExceptionDomains字典,并添加了 google.com 字典,其中包含设置为true的NSIncludesSubdomain和NSExceptionAllowsInsecureHTTPLoads设置为true,认为这可能是问题所在,但无济于事。 我已经尝试了几个网址和同样的事情。

我怎样才能知道发生了什么并修复它?

我发现了问题!显然,我需要将键"应用程序传输安全设置"作为字典添加到我的 Info.plist 中,并添加键"允许任意加载"作为真实。它现在显示!

我以前找不到这个,但是当我这样做并添加它时,它与上面的代码一起工作得很好。

我知道

你已经找到了解决方案。但在这里我想解释代码的问题。代码实际上很好。问题是您正在尝试打开不安全的 URL http://google.com/。任何以 http://开头的 URL 都将被 iOS 阻止。仅允许以 https://开头的 URL,而不允许使用任何"应用传输安全设置"。

在您的情况下,您实际上有 2 个选择:

  1. 添加应用传输安全设置。
  2. 确保仅调用 https://URL。您可以更改 https://google.com 它应该无需添加任何应用程序传输即可工作 安全设置。

至于您添加的选项"允许任意加载"可以进行测试,但您真正需要做的是在应用程序传输安全设置中添加例外域。这样,您的应用仅接受相关 URL,而不接受任何可能通过恶意 URL 注入打开的旧 URL。

相关内容

  • 没有找到相关文章

最新更新