三个应用程序之间的 CORS 不一致
Posted
技术标签:
【中文标题】三个应用程序之间的 CORS 不一致【英文标题】:CORS Inconsistent Across three Apps 【发布时间】:2019-07-31 02:19:54 【问题描述】:我有一个分析服务器 (matomo),它可以很好地跟踪主要的“实时”站点。反过来,我有另一个 Web 应用程序“门户”,它可以成功地对分析服务器进行 http 调用。 现在,我正在尝试对另一个现有站点进行相同的调用。该站点是创建显示在 Live 站点上的内容的位置。 最后一个站点是一个巨大的 nodejs + angularjs 站点,它位于另一个供应商的另一个数据中心。它成功地调用具有不同子域的 REST API 层。 但是,调用上述分析会触发大型应用程序中的 CORS 错误。 FireFox 给出以下错误:“(原因:CORS 预检通道中的 CORS 标头‘Access-Control-Allow-Headers’中缺少令牌‘授权’)” 我不明白为什么它适用于门户网站,但不适用于内容创建者。 一切都在 CloudFlare 背后,而 Cloudflare 正在强制一切都是 https 调用。 每个应用程序都使用同一域的子域。内容创建者正在成功调用 api.mydomain.com。门户正在成功调用 analytics.mydomain.com 和 api.mydomain.com。 分析站点正在使用 php / apache。门户使用 php/angularjs。内容提供者正在使用 nodejs / angularjs。 现场使用的是 nodejs / angular 2.x。 任何见解将不胜感激。
【问题讨论】:
【参考方案1】:原来有些标头没有被返回。显然,其他程序并不关心,但第三个程序关心,即使没有执行 POST。我在 apache2 conf 文件中添加了以下信息:
标头始终设置 Access-Control-Max-Age "1000" 标头始终设置 Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding" Header 总是设置 Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
【讨论】:
以上是关于三个应用程序之间的 CORS 不一致的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 和 Angular 之间处理 CORS 和 CSRF
如何在 API Gateway 和 React 应用程序之间启用 AWS 中的 CORS 策略?
Angular 10 和 Spring Boot 1.5 之间的 CORS 问题