【发布时间】:2018-08-07 08:42:25
【问题描述】:
我们正在使用 vue.js 和 Node.js (Express) 构建一个 SPA。 SPA 是从 1 个域下载的,而 REST api 在另一个域中。
问题是我注意到 Chrome 在对与下载网页的域不同的另一个域(CORS 请求)进行 ajax 调用时会执行 2 个请求而不是 1 个请求。
经过一些研究,我得出的结论是,这是一个功能,而不是错误。
那么,以优雅的方式解决这个问题的最佳方法应该是什么?
我目前丢弃了第一个状态为 200 响应的请求,但我认为这不是最好的方法。
【问题讨论】:
-
是的,我有!谢谢你的回答。在尝试了该帖子所讨论的内容后,我已经发布了此问题...我可能还遗漏了其他内容...我也仔细看了看,以防我进行了 2 个 AJAX 调用而不是一个,但事实并非如此.我很确定这不是编程错误,因为我总是在 POST 的正文中附加一个 JWT,而加倍的请求没有。
-
第一个请求是
OPTIONS请求(而不是GET或POST)?如果是这样,那很可能是CORS preflight request,浏览器使用它来确定是否允许发送实际请求。理想情况下,您的服务器应该只返回 CORS 标头来响应此问题。如果您的业务逻辑被调用两次,则说明您的服务器未正确实现 CORS。 -
这个样子肯定是了,谢谢。我对CORS了解不多,所以不知道如何处理。我确实使用适当的 res.header("Access-Control-Allow-Origin", "*"); 在服务器端处理它等等...是否可以避免第一个请求,因为我的 API 接受 CORS?
-
等一下,写一个答案。
标签: node.js rest google-chrome express cors