从昨天开始,我在Cordova和(也许是?)cordova-plugin-whitelist上遇到问题,无法找到解决方案,因此,我在这里寻求您的帮助。我会尽力解释一切。
背景
我在一家IT公司工作,我们使用Cordova Platform开发了一些应用程序。昨天,我在设备上安装了一个应用程序,并出现以下错误:
Access to XMLHttpRequest at 'http://valid-url/' from origin 'file://' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Uncaught (in promise) Error: Request has been terminated Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc. at Request.push../node_modules/superagent/lib/client.js.Request.crossDomainError (client.js:621) at XMLHttpRequest.xhr.onreadystatechange (client.js:705)
此错误不允许我向服务器提出请求。但这是一个奇怪的事情:这只是在我第一次启动应用程序时或当我删除数据库时发生;如果我关闭该应用程序并重新启动,它就可以正常工作。另一个奇怪的事情是:这发生在我们所有的应用程序中,而其中的一些应用程序没有得到新的补丁或几个月内没有任何变化,所以...怎么可能呢?我虽然要对Chromium进行更改,但是设备上的版本比实际版本要旧。
我知道我需要cordova-plugin-whitelist发出请求,我已经将它安装在 1.3.4 版本上,并且在config.xml上具有此配置(在一个应用程序上) :
# The map here can come from other supported configurations
# like locals, resource attribute, map() built-in, etc.
variable "example" {
default = {
#HERE YOU DEFINE YOUR MAP
rds_password= "${random_string.rds_password.result}"
}
type = "map"
}
resource "aws_secretsmanager_secret_version" "example" {
secret_id = "${aws_secretsmanager_secret.example.id}"
# HERE YOU INJECT THE KEY/VAL
secret_string = "${jsonencode(var.example)}"
}
我当前的 cordova-android 版本是7.0.0-我已经尝试将cordova-android和插件白名单分别降级为6.4.0和1.3.3,但是没有用。
我怀疑问题出在Android本身或cordova-plugin-whitelist,但请记住:它从零开始,没有代码库或新版本的任何更改-这让我发疯。
有人可以给我个灯吗?
谢谢!
答案 0 :(得分:1)
我们公司遇到同样的问题。调查发现,我们发现了这个Chromium错误,该错误已合并到77中:
https://bugs.chromium.org/p/chromium/issues/detail?id=991107
如果您正在运行Chromium 76,则可能是造成麻烦的原因。可悲的是,这对我们来说是无法修复的。