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将。