【问题标题】:WKWebView cannot trigger ajax to load a file on localWKWebView 无法触发 ajax 在本地加载文件
【发布时间】:2015-10-19 09:51:29
【问题描述】:

我在 WKWebView 中嵌入了所有 html,直到我认识到 WKWebView 无法在本地加载 xml 文件之前,一切正常

$.ajax({ 类型:“获取”, 网址:“tags.xml”, 数据类型:“xml”, 缓存:假, 成功:函数(xml){ }, 错误:函数(){ alert("处理 XML 文件时发生错误。"); } });

我的 UIWebView 代码

//urlFolder 位于本地一个临时文件中:tmp/www/htmlFolder //urlFile位于urlFolder:tmp/www/htmlFolder/index.html //xml文件位于urlFolder:tmp/www/htmlFolder/tags.xml WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init]; _webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration]; [_webView loadFileURL:urlFile allowedReadAccessToURL:urlFolder]; [self.view addSubview:_webView];

注意:我使用的是 XCode7.1 Beta、Objective-C、ios9.1、WKWebView

【问题讨论】:

    标签: ajax wkwebview ios9.1


    【解决方案1】:

    据我所知,他们在 WKWebViews 中禁用了跨域请求。

    搜索 cors 或 xhr + WKWebView 以获取有关此问题的更多信息。我认为这一定是某种错误,因为在使用本地文件(如您的示例)的“普通”UIWebViews 中,这一直是可能的。

    但是,您可以在您的应用程序中运行small/lightweight http-server,这对我来说非常有用。确保在 localhost 的 .plist 文件中为 App Transport Security Settings 添加一个例外。

    【讨论】:

    • 我自己也遇到了同样的问题,wkwebview 中的本地脚本发出远程请求,但是从应用程序中的服务器提供本地文件对我没有帮助,现在远程服务器而是抱怨 localhost 不在允许列表中。我需要做其他事情来完成这项工作吗?
    • 您需要在 xcode 的 Info.plist 文件中的 NSAppTransportSecurity 条目中添加 localhost 的异常。那是因为 Apple 不再允许 webview 访问非 https 网页。
    • 非常感谢您的快速回复!我会试试这个,虽然应用程序已经允许任意加载(不是我的错!)。我在想我必须要求服务器人员将 localhost 添加到他们的 CORS 标头中,尽管我不知道这是否可能。直到明天才能尝试,所以我会试一试!
    • 不幸的是,它没有帮助。我将尝试使用 GCDWebserver,而不是 Swifter。但是我遇到的问题不是加载本地html,而是远程ajax调用它的js。我得到“[错误] XMLHttpRequest 无法加载apoteket.se/psoapi/minaReceptService/getKundInformation。访问控制允许源不允许源localhost:8080。”来自网络视图。
    • 啊,我误解了你的问题。是的,看起来他们需要在 CORS 标头中添加通配符。虽然不是我的专业领域,但在 php 中类似于: header('Access-Control-Allow-Origin: *');希望有帮助!
    【解决方案2】:

    您可以使用我从一些代码示例拼凑而成的插件,而不是本地服务器。它应该为您启用通过 XHR 的本地文件访问。我用它来恢复对我们应用程序上许多本地文件的访问。

    https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2016-04-08
      • 2014-09-13
      • 2018-09-13
      • 2021-04-21
      相关资源
      最近更新 更多