这是在某些 Android 设备上发生的问题。
我有一台 Samsung Galaxy A5 (2017)
,Google Chrome 版本 76.0.3809.89
和 Android 版本 8.0.0。
当我第一次在此设备上部署我的 Cordova 应用程序并发出 POST 请求时,我收到有关 CORS 的错误:
Access to XMLHttpRequest at 'http://foo.com/bar' 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.
我可以从 Chrome 的开发工具网络选项卡中看到这个 POST 请求没有 origin
参数。
如果我从任务管理器关闭应用程序并再次启动它,我可以成功发出此请求并且 chrome 会根据请求发送“origin”参数。
如果我从设备的设置中删除应用程序的数据,我可以再次重现该问题。
我完全确定这不是 Content-Security-Policy
或 cordova-whitelist-plugin
配置的问题,因为正如我之前提到的,在其他一些android 设备应用程序工作正常。
我需要提及的另一件事是,使用人行横道插件时我没有遇到这个问题。
最佳答案
这是 Chromium webview 上的一个公开错误,对 76 版本很有趣;在此特定版本中,OOR-CORS 在第一次运行时保持启用状态。
https://bugs.chromium.org/p/chromium/issues/detail?id=991107#c14
一个变更列表会直接合并到76分支。
关于android - 在某些 Android 设备中,Cordova 不会根据请求发送来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57326410/