我正在开发node.js和mongoDB中的后端。后端基于API调用。我注意到有一件事总是每当我调用PATCH API和DELETE API时,我看到OPTIONS API在PATCH,DELETE调用之前调用了相同的url。我不明白为什么会这样吗?我还不知道这些方法的技术术语,所以我无法找到谷歌的原因,我注意到GET API的调用有时也会发生同样的情况。
我不知道,但他们与中间件代码有任何关系,允许我在下面写的API访问,
app.use(function (req, res, next) {
// Allow access request from any computers
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE,PATCH');
res.header('Access-Control-Allow-Credentials', true);
if ('OPTIONS' == req.method) {
res.sendStatus(200);
} else {
next();
}
});
答案 0 :(得分:0)
发送HTTP-OPTIONS请求的需求由浏览器定义。 如果您的客户端和服务器的主机和端口都相等,则不需要发送此类请求。
<强>示例:强>
基本上,客户端询问服务器,如果他没问题。只有在发出正常请求之后才会发送。
客户端只发送HTTP-Headers,因此这种请求方法比通常的HTTP方法(包括请求体)快得多。
更多信息 - HTTP OPTIONS。
<强>更新强>
您正在使用的中间件允许其他客户端向您的API发出请求。如果您尝试删除它 - 客户端将在OPTIONS调用上收到错误,并且下一个请求将不会被执行。只需检查它的外观。它被称为CORS error。