【问题标题】:CORS and phonegap appsCORS 和 phonegap 应用程序
【发布时间】:2014-02-13 08:26:10
【问题描述】:

phonegap 应用程序是否需要任何 CORS 更改(例如设置 Access-Control-Allow-Origin:*)才能工作?我在 Heroku 上托管了一个 RESTful API,我想知道是否需要设置此标头才能让我的 phonegap 应用程序调用该服务?

我在想,因为 phonegap 应用程序并没有真正托管在域上,所以不需要 CORS,我不会遇到任何跨域问题?

如果有人可以向我解释为什么会这样或不是这样,那就太好了。

【问题讨论】:

    标签: cordova cross-domain cors


    【解决方案1】:

    PhoneGap 你可以直接 XHR 到远程服务器和它 应该“正常工作”。跨域策略不适用于 PhoneGap (出于各种原因,基本上是因为您的应用程序本质上是 运行设备上的 file:// URI)。

    请注意,您必须为您的应用设置白名单 访问这些外部域。请检查此链接:

    http://docs.phonegap.com/en/1.8.0rc1/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide

    【讨论】:

    • 请记住,此白名单不适用于通过 inAppBrowser-Plugin 完成的内容。白名单仅适用于 Cordova 主 web 视图!
    • 我想知道为什么 this answer 说“通过 file:// 运行的脚本对 CORS 的支持有限”,如果 XHR 到远程服务器应该“正常工作”。
    • 感谢这篇文章,这是我要分享的结论。它真的会“正常工作”。但是如果在服务器上启用了 CORS,它将不起作用,因为您不能将“file://”设置为允许的来源。
    【解决方案2】:

    默认的 Cordova (PhoneGap) 平台都不需要 CORS,尽管 HTML 文件托管在本地 (file://) 并且正在访问 Web 域。

    但是,在 iOS 上,如果您通过 cordova-plugin-wkwebview-engineUIWebView 切换到较新的 WKWebView,则确实必须实施 CORS。

    【讨论】:

    • 请注意,“浏览器”平台确实需要 CORS。不确定是否有其他人这样做。
    • @Jules:与其他平台不同,browser 不依赖于任何特定的 Web 视图,因此它仅取决于您选择使用的 Web 浏览器。假设您正在谈论开发用途,在 Chrome 中使用 --disable-web-security flag 禁用同源策略并避免实施 CORS 是微不足道的。
    • 这个“所有默认的 Cordova (PhoneGap) 平台都不需要 CORS”在 2018 年 8 月仍然有效吗?在我们与客户的 LOGIN 集成期间,移动应用程序收到 401 并且详细信息显示“CORS”错误。服务器团队说他们在网关上启用了 CORS,但相信来源“file://”是根本原因。帮助:(
    • @mobibob:据我所知,这仍然是正确的。无论如何,最好的办法是发布一个新问题,指出平台并包括完整的请求和响应标头。
    • cordova 插件添加 cordova-plugin-wkwebview-file-xhr
    【解决方案3】:

    是的,您必须在托管您的 API 的服务器上激活 CORS。 我在 iOs 上运行 Phonegap 应用程序。我的应用程序从 Apache 上的服务器 API 请求 json。 我在服务器上激活 CORS 以获取数据,否则我的应用程序中什么也得不到,没有错误也没有数据。

    请注意,配置文件中的访问参数允许您过滤您的应用程序有权查询的域,但对服务器的权限没有任何作用。

    【讨论】:

      【解决方案4】:

      从cordova 5开始,您需要添加白名单插件

      https://github.com/apache/cordova-plugin-whitelist

      在 config.xml 中添加

      <!-- Don't block any requests -->
      <access origin="*" />
      

      【讨论】:

      • 在 windows 手机上仍然存在 CORS 问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多