浏览器阻止受Google IAP保护的SPA上的API请求

时间:2019-08-21 17:25:48

标签: google-iap

我遇到了一个问题,该问题最近在受Google Identity Aware Proxy保护的Web应用程序中启动。

这是我的设置:

  • 由后端服务提供服务的API GKE容器,受IAP保护。
  • 由后端服务提供服务的SPA GKE吊舱,受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令牌到期有关。

1 个答案:

答案 0 :(得分:0)

嗯,您使用的是哪种浏览器,您是否知道浏览器更新是否可能触发了此操作?如果您使用的是Chrome,是否会用标志--disable-features=FetchMetadata,SecMetadata重新启动Chrome来解决此问题?