Safari扩展上的应用程序传输安全

我的应用程序扩展需要打开来自许多网站的url。 我做如下:

for (NSExtensionItem *item in self.extensionContext.inputItems) { for (NSItemProvider *itemProvider in item.attachments) { if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) { [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(NSURL *url, NSError *error) { NSLog(@"URL: %@",url); 

我可以得到的URL,但在这一点上,我得到这个错误:

应用传输安全已阻止明文HTTP(http://)资源加载,因为它是不安全的。 临时例外可以通过您的应用程序的Info.plist文件进行configuration。

我试图完全closuresATS,

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

但它不起作用,我不能列出NSExceptionDomain内的网站。 我尝试在模拟器和设备上。 有人可以帮忙吗?

编辑

我认为导致问题的代码是这样的:

 NSString* htmlString = [NSString stringWithContentsOfURL: url encoding:NSUTF8StringEncoding] 

我在URLlogin后使用这行代码来获取纯文本的HTML。

您是将NSAppTransportSecurity字典添加到应用程序扩展的Info.plist文件,还是仅仅在父应用程序的Info.plist文件中? 因为如果扩展程序正在发出请求,则该exception需要位于扩展程序的Info.plist文件中。

如果这没有帮助,请尝试直接使用NSURLConnection ,看看是否有任何区别。 我怀疑它会,但它可能是值得一试。

我遇到了同样的问题,但将NSAllowsArbitraryLoads设置为是固定它。 我build议尝试:

 NSError *error; NSStringEncoding encoding; NSString *content = [NSString stringWithContentsOfURL:contentURL usedEncoding:&encoding error:&error]; 

*请注意,我正在使用usedEncoding而不是编码。

这将允许你得到一个错误,看看最好的编码是什么。 这可能是因为你使用了错误的编码,或者你传递的文件不能被解码。 即.mp4,.m4a和.mp3文件将不起作用,但.m3u8将。