我在 Cordova CLI 上开发一个项目并在物理 iPhone 上编译应用程序,但在控制台中出现访问控制源错误。
这是消息:
[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,您需要指定scheme
和hostname
根据文档here:
此外,此版本还引入了 WKURLSchemeHandler 支持。使用自定义方案通过修复由于 WKWebView 对文件方案应用了严格的安全策略而存在的 CORS 问题来提供应用程序内容。您可以通过在 config.xml 文件中设置首选项方案和主机名,轻松将 Cordova 项目配置为使用自定义方案。
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
这将为您的应用程序提供服务app://localhost
代替file://
, 和你的origin
对于 xhr 请求也将是app://localhost
。由于此源是与 CORS 请求一起发送的,因此您可能需要更改主机名以匹配远程域(如果您的应用程序使用远程域),不过只要将其添加到 CORS 中就可以了Access-Control-Allow-Origin
响应中的标头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)