无法让WebKit显示网页

问题描述 投票:0回答:2

我正在尝试研究如何在我的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,其中包含一个字典,其中NSIncludesSubdomains设置为true,NSExceptionAllowsInsecureHTTPLoads设置为true,这可能是问题,但无济于事。我尝试了几个网址和同样的事情。

我怎样才能找出正在发生的事情并修复它?

ios objective-c webkit mobile-webkit
2个回答
0
投票

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

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


0
投票

我知道你找到了解决方案。但在这里,我想解释代码有什么问题。代码实际上很好。问题是你正试图打开一个不安全的网址http://google.com/。任何以http://开头的网址都会被iOS阻止。只允许以https://开头的URL,而不允许任何“应用传输安全设置”。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.