问题描述
我在 Google Cloud Run 上托管了一个 API,并使用 API 网关和网关前面的 GCP 负载均衡器公开。此 API 应该由多个租户使用,因此请求将来自不同的来源。
现在,每当我尝试从另一个租户域访问 API 时,都会因为 CORS 问题而收到 404。
当我第一次设置它时,我收到一个错误,提示 Access-Control-Allow-Origin
没有出现在响应中。然后,我更新了负载均衡器配置以将 Access-Control-Allow-Origin: '*'
添加到响应的标头中。
现在,在设置标题后,我仍然收到 404,但错误消息已更改为 Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
有没有办法设置负载均衡器,使其不因 CORS 问题而阻止请求?
解决方法
Hi Thiago 当浏览器通过 XMLHttpRequest (XHR) 请求 API 时,浏览器会发送两个请求: 第一个使用 OPTION 方法获取预检标题(必须处理) 第二个实际请求 POST/GET/...
总结: 测试您是否可以使用 curl 发出请求,来自命令行的请求将通过,因为它不会向您的端点发送 OPTION 请求。如果这是真的,则意味着您不允许向端点发出 OPTION 请求,这就是问题所在。
希望这能解决您的问题。