Cordova通过XMLHTTPRequest加载图片问题

在项目中使用XMLHTTPRequest方式加载图片时发现加载失败,深入挖掘后,我发现根本原因是Cordova(Ionic的底层平台之一)将请求限制为仅限于本地(file://)资源,这使得所有外部请求都失败。github中提供了解决该问题的库https://github.com/oracle/cordova-plugin-wkwebview-file-xhr

这个插件可以通过解决以下问题来获得在Cordova应用程序中使用WKWebView的性能优势:

1.WKWebView的默认行为是在使用文件协议 - “file://”从主包加载文件时引发交叉起源异常。如果Web视图的当前位置具有“文件”协议,并且传递给XMLHttpRequest的打开方法的目标URL是相对的,则此插件将通过本地代码加载文件来解决此缺陷。作为安全措施,插件会验证目标URL的标准化路径是否位于应用程序主包的“www”文件夹中。

2.由于应用程序的起始页面是从设备的文件系统加载的,因此所有到远程端点的XHR请求都被认为是跨源的。对于这样的请求,WKWebView将“null”指定为Origin头的值,这将被配置为禁止来自空值原点的请求的端点拒绝。这个插件通过处理原始头部将被排除的本地层的所有远程请求来解决这个问题。

你可能感兴趣的:(Cordova通过XMLHTTPRequest加载图片问题)