设置:
如果没有身份感知代理,我可以通过设置 CORS 以允许来自服务 A 主机名的调用,从前端客户端向不同主机名上的 api 发出请求。
我希望能够在两个服务都位于身份感知代理后面时执行相同的操作。
按照IAP文档中的说明进行操作我有:
这是我面临的错误:
Access to XMLHttpRequest at 'https://api-dot-my-app-dev.appspot.com/api/123' from origin 'https://frontend-dot-my-app-dev.appspot.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
当我从 localhost 到 localhost 或从服务 A(客户端)到 localhost api 发出相同的请求时,请求成功。
这让我相信该问题与身份感知代理有关。我唯一的猜测是它与 预检请求有关,我在浏览器控制台的网络请求中没有看到任何相关内容。
我真的很希望能够让这两个应用程序在 IAP 后面使用它们自己的主机名,同时仍然进行通信。不幸的是,我对如何做到这一点已经穷尽所有想法。
与此同时,我现在使用下面的替代方案#2 来工作。
替代方案:
如果这可能或可能出现什么问题,有什么想法吗?
编辑:这里是一个演示我的问题的存储库。
编辑2:根据这篇文章,此功能曾经有效,谷歌表示支持它是个好主意,但没有提供时间表。
不确定这是否可以应用于您的用例,但我已经看到通过将 access_settings.cors_settings.allow_http_options 更改为 true,允许 CORS 预检请求通过 IAP 传递来解决此类问题。
3年过去了,但这个问题仍然具有现实意义。 我遇到了同样的问题,并且相同的域+dispatch.yaml 工作正常。 无需在应用程序引擎中托管网站。它可以托管在任何软件上,但我必须在同一域上配置两者,例如: www.mydomain.com 和 api.mydomain.com