浏览器客户端中的CORS问题

我的客户端和要查询的API出现了一个奇怪的问题,我的客户端是NodeJS + ReactJS + Axios,服务器是Nginx之后的通用API REST(启用了所有CORS选项)。

每当我尝试向API发送一个简单的请求时,都会看到Preflight成功,并且API返回200,我能够得到响应并验证数据。 当我从发送错误数据的API强制执行错误400,预检成功(将200返回OPTIONS标头),但浏览器立即阻止错误400,返回“错误:网络错误”并显示即使我可以在“网络”选项卡中看到状态代码400,也会发生CORS问题。

cors example

我可以在API服务器中看到响应,其中包含有关请求失败原因的详细信息。我还将大多数请求-结果-响应存储在API中以进行审核,并且可以看到所使用的参数和给出的响应。

我使用Ruby,Sinatra和HTTParty构建了另一个小型应用程序,以查询完全相同的终结点,并且能够从API获取错误代码和消息,而没有cors问题。

由于某些原因,NodeJS客户端会阻止响应(如果此响应的值不同于200)。 我也尝试使用node-fetch库,但情况相同,在成功交付带有OPTIONS标头的预检后,我可以在控制台中看到两个CORS警告。

我也尝试设置Axios的基础知识,并在包本身中跟踪问题,但是显然在响应到达请求者之前,已过滤了网络错误。

欢迎任何帮助! 非常感谢你

评论