我已经阅读了很多关于 CORS 的内容以及允许 Access-Control-Allow-Origin: * 是 Web 服务器的安全漏洞。但是没有一篇文章解释我们如何允许 HTML5 混合应用程序访问托管在某些域上的 Web 服务,这些域不允许使用通配符 char *
我的问题是:据我所知,HTML5 混合应用程序无法在我们可以在 Access-Control-Allow-Origin 列表中设置为白名单域的任何特定域上运行。那么我们如何仍然可以通过在 Access-Control-Allow-Origin 标签下不允许 * 的 Web 服务器上进行 ajax 调用来访问来自混合 APP 请求数据的 Web 服务数据?
最佳答案
在设备上运行时,您的应用程序将在浏览器中运行,但将从本地文件系统(从类似于 file://path/to/index.html 的位置)运行。因此,起源不存在。浏览器不会执行任何预检 OPTIONS 请求,也不会因为跨源问题而阻止对 API 的调用,仅仅是因为没有源。
因此,您可以将服务器配置为仅允许同源请求,以确保安全。从该设备调用的电话仍将被允许。但是,当您在本地开发机器的浏览器中运行您的应用程序(出于测试目的)时,您可能会遇到 CORS 问题,因为在这种情况下, 有一个来源。您可以通过允许本地域访问 API(记得在生产中将其删除)、使用浏览器插件禁用 CORS 或使用代理来解决此问题。
关于javascript - HTML5 混合应用程序的 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26966268/