我有一个运行在生产环境的Angular6应用程序,偶尔会有一些用户在进行HTTP请求时出现错误。
Http failure response for (unknown url): 0 Unknown Error response: {"isTrusted":true}
这会随机地影响用户,就我所知,在用户使用的HTTP方法或其他方面上并没有模式,我使用Sentry记录错误。
我已经花了很多时间寻找解决方案,到目前为止几乎所有提示都指向了错误的跨域资源共享(CORS)头文件。 所有请求都通过一个API网关发送,CORS头文件已设置。
'Access-Control-Allow-Headers': 'Content-Type, x-internal-token, Origin, Accept, X-Requested-With, If-Modified-Since, Cache-Control, Keep-Alive'
'Access-Control-Allow-Origin': 'http://example.com'
'Access-Control-Allow-Methods': 'PUT, POST, GET, DELETE, PATCH, OPTIONS'
'Access-Control-Max-Age': 3600
到目前为止,当应用程序在首次加载并从API网关获取某些信息时,我没有收到任何错误,只有在用户使用应用程序时才会出现错误。更奇怪的是,我也收到了关于./assets/i18n/de.json
(正常的GET请求)的错误,它不是CORS,而只是一些用于动态翻译的静态JSON。
我已经完全无计可施了,请提供任何帮助,非常感谢。
编辑:请仔细阅读;这个问题只存在于某些用户身上,并不是普遍的配置错误!
编辑2:为了进一步调试这个问题,我设置了第二个API-Gateway(相同代码),该网关被配置为记录所有请求。对Angular应用程序进行了轻微修改,以便它执行相同的请求两次;一次针对真实的API-Gateway,一次针对记录日志的API-Gateway(对于某些API调用)。在某些情况下,应用程序能够向真实的API-Gateway发出请求,但无法向记录日志的网关发出请求(相同代码,都是Nginx,CORS标头相同)。
编辑3:记录网关和真实的API-Gateway位于不同的服务器上(不同的提供商),我可以在nginx日志中看到OPTIONS请求,状态为200。
编辑4:我已将CORS处理从API-Gateway移动到Nginx,到目前为止,我没有收到更多错误。