我有一个JavaScript应用程序,通过HTTPS对Google云功能进行客户端调用。由于云域是https://us-central1-myproject.cloudfunctions.net,因此这是一个跨域请求。我的云函数代码返回适当的跨域标头,并且一切正常。
但是,当执行异常终止(由于超时或未处理的异常)时,Google会在我的控制范围之外返回自己的错误响应(状态400、408等),其中不包含任何跨域标头。我要处理这些错误。
但是,看来Chrome发生这种情况时的行为(即未经CORS批准且状态代码不为200的跨域请求)只是将请求永久挂起,并以零表示失败( Chrome开发者工具中的“网络”标签永远显示“待定”)。 otoh Firefox记录了该错误,但将状态代码屏蔽为0。
处理因客户端JavaScript失败而导致的对云函数的调用的正确方法是什么?
我在这里看到两个选项:
1)这真的是Chrome中预期的行为吗?如果响应都未经CORS批准并且返回非200状态代码,是否有任何方法可以检测到跨域请求是否失败?
2)是否可以将Google Cloud配置为向我的功能代码无法控制的这些错误响应(400、408等)添加跨域标头?
Ubuntu 18上的Chrome版本72.0.3626.121,首先。