【发布时间】:2023-03-17 16:35:01
【问题描述】:
我最近在受 Google Identity Aware Proxy 保护的网络应用程序中遇到了一个问题。
这是我的设置:
- 一个 API GKE pod,由后端服务提供服务,受 IAP 保护。
- 一个 SPA GKE pod,由后端服务提供服务,受 IAP 保护。
- 两个后端服务配置为使用相同的 OAuth 客户端 ID。
- API 和 SPA 服务于同一个域 - SPA 服务于 example.domain.com,而 API 服务于 example.domain.com/api。
- SPA 从 Web 浏览器中的 JavaScript(使用 axios)调用 API。
- 另外两个服务也存在非常相似的设置,这次是在 GAE 上。
直到昨天,部署在 GAE 和 GKE 上的服务一切正常。但是,今天我开始在浏览器控制台中对浏览器内的 JavaScript 请求偶尔出现错误,说:
Access to XMLHttpRequest at 'https://example.domain.com/api' from origin 'https://example.domain.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我尝试更改服务器上的 CORS 策略,允许所有来源,甚至允许没有 cors 标头的 OPTIONS 请求。在客户端,我尝试更改一些标头请求(之前使用 Axios 默认),例如设置 axios.defaults.withCredentials = true。没有任何帮助。
我能找到的唯一解决方法是在另一个选项卡中手动进入 API URL (example.domain.com/api),然后返回 SPA 选项卡并刷新它,但必须每小时完成一次 (我猜这与 OAUTH 令牌过期有关)。
【问题讨论】:
标签: google-iap