2

我最近在受 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 令牌到期有关)。

4

1 回答 1

0

嗯,您使用的是哪个浏览器,您知道浏览器更新是否会触发此问题吗?如果您使用的是 Chrome,重新启动带有标志的 Chrome 是否--disable-features=FetchMetadata,SecMetadata可以解决问题?

于 2019-08-21T22:36:19.600 回答