gpt4 book ai didi

node.js - 来自 Google Chrome 的 2 个请求而不是 1 个

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:03 24 4
gpt4 key购买 nike

我们正在使用 vue.jsNode.js (Express) 构建 SPA。 SPA 是从 1 个域下载的,REST API 在另一个域中。

问题是,我注意到,当对与下载网页的域不同的另一个域(CORS 请求)进行 ajax 调用时,Chrome 会执行 2 个请求,而不是 1 个。

经过一些研究,我得出的结论是,这是一个功能,而不是一个错误。

那么,以优雅的方式解决这个问题的最佳方法应该是什么?

我目前丢弃了第一个带有 200 状态响应的请求,但我认为这不是最好的方法。

最佳答案

如果发送的第一个请求是 OPTIONS 请求,则很可能是 CORS pre-flight 。浏览器用它来询问服务器是否允许提交实际请求。

如果您的服务器正在运行业务逻辑来响应飞行前,则说明您尚未正确实现 CORS - HTML5Rocks 提供了这个实用的流程图,说明其实际工作方式:

CORS flowchart

这可能看起来有点难以承受 - 值得庆幸的是,您不必担心这一点,因为已经有一个 official CORS middleware for Express它提供了此功能以及更多功能。如果将其插入,您应该能够从应用程序中删除所有显式 res.header("Access-Control-Allow-Origin", "*") 内容。

关于node.js - 来自 Google Chrome 的 2 个请求而不是 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com