科尔多瓦iOS本地文件上的"Origin null is not allowed by Access-Control-Allow-Origin"



我在Cordova CLI上开发了一个项目,并在物理iPhone上编译了该应用程序,但在控制台中出现了Access Control Origin错误。

这是一条信息:

[Error] Origin null is not allowed by Access-Control-Allow-Origin.
[Error] Failed to load resource: Origin null is not allowed by Access-Control-Allow-Origin. (bootstrap.min.css, line 0)

错误来自本地文件,也来自ajax。

我的config.xml的配置是:

<?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="14" defaultlocale="es-ES" id="com..." version="2.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>TEXT</name>
<description>TEXT</description>
<author email="MYEMAIL" href="MYURL">
MYNAME
</author>
<content src="index.html" />
<access origin="*" />        
<allow-navigation href="*" />
<preference name="windows-target-version" value="10.0" />
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />

在我的项目的所有html文件中,元文件是:

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src * data: content:; connect-src *;">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">

我的项目数据是:

Cordova version 10.0.0
cordova-ios version  6.1.1

有人能帮我纠正这个问题吗?我非常感谢

带Cordova-ios@6,您需要根据此处的文档指定schemehostname

此外,本版本还引入了对WKURLSchemeHandler的支持。使用自定义方案通过修复由于WKWebView对文件方案应用了严格的安全策略而存在的CORS问题来提供应用程序内容。通过在config.xml文件中设置首选项scheme和hostname,您可以轻松地将Cordova项目配置为使用自定义方案。

<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />

这将从app://localhost而不是file://提供您的应用程序,您的xhr请求的origin也将是app://localhost。由于该来源是与CORS请求一起发送的,因此您可能需要更改主机名以匹配远程的域(如果您的应用程序使用的是域(,不过只要您在响应中将其添加到CORSAccess-Control-Allow-Origin标头中,一切都会好起来。

这是因为WKWebView没有原点,所以你不能按原样使用CORS。你需要一个插件来允许没有原点的XHR。

查看cordova插件ios xhr

解决方案:

问题只是bootstrap的样式表链接上的一个属性:p

<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous" />

问题是:

crossorigin="anonymous"

只需要这个:

<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"/>

而服务器端,在PHP上为ajax请求添加:

header("Access-Control-Allow-Origin: *")

感谢您抽出时间

相关内容

最新更新