【问题标题】:CORS policy applied to cordova hybrid app应用于科尔多瓦混合应用程序的 CORS 策略
【发布时间】:2019-12-16 12:22:47
【问题描述】:

在我的 cordova 应用程序中,我使用 $.ajax 请求来访问外部 api(在我的服务器上)。 我已经安装了cordova-plugin-whitelist。

但每次运行干净安装的应用程序或清理缓存 + 数据后,我都会收到以下错误之一:

1:当我启用 header('Access-Control-Allow-Origin: *');

Access to XMLHttpRequest at 'https://myapi_adress' from origin 'file://' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

2:禁用

Access to XMLHttpRequest at 'https://myapi_adress' from origin 'file://' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

在设备上重新启动应用程序后,一切运行完美。 来自设备的每个请求都包含

 'Origin' => 'file://'

标题

但它只会在第一次运行或清除应用程序的缓存和数据后阻塞。

看起来白名单插件在首次运行或清除缓存后没有应用/工作。

有什么建议吗?

【问题讨论】:

  • 你在等待 deviceReady() 事件吗?
  • @MaheswaranRavisankar ,当然,我已经找到答案并将发布它

标签: android ajax cordova cors cordova-plugins


【解决方案1】:

好的,答案如下:

最近的 chrome/WebView 更新导致首次/clear_cache 启动时配置错误(https://bugs.chromium.org/p/chromium/issues/detail?id=991107):

[总结] WebView 76 似乎只在第一次启动时采用了错误的配置。作为一种解决方法,一旦 WebView 重新启动,它就可以继续正常工作。 笔记: - 请检查左上角的星形图标以支持更高的优先级(很多“我也是”的 cmets 隐藏了信息反馈) - 修复已合并到发布分支,但现在没有安排更新(#c21,#c23) - 解决方法信息(确保它对您安全):#c19、#c37 对于 WebView 测试版用户: 如果您在 beta 通道上,您能否帮助我们确认您的应用程序是否可以使用 WebView 77 beta? 我们计划在 WebView 77 上启用 OOR-CORS。因此,这非常有助于降低在 m77 稳定提升中导致回归问题的风险。 (注:WebView 77 beta 尚未推出)

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 2015-04-26
    • 2017-07-31
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多