我正在尝试对我的其余api端点进行PUT
调用,并收到此错误:
Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.
我使用此解决方案启用了CORS
:enable-cors,它适用于POST
。
如何为PUT
实现相同的目标?
感谢。
答案 0 :(得分:22)
添加:
res.header(' Access-Control-Allow-Methods',' PUT,POST,GET,DELETE,OPTIONS');
app.use(function(req, res, next) {
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', 'PUT, POST, GET, DELETE, OPTIONS');
next();
});
答案 1 :(得分:8)
您需要在服务器上支持OPTIONS方法,因为浏览器会预先传输所有跨源PUT请求,无论您拥有什么标头。而且,您需要确保在CORS标头中明确允许PUT。请参阅MDN's page on CORS:
此外,对于可能对服务器数据造成副作用的HTTP请求方法(特别是对于GET以外的HTTP方法,或对某些MIME类型的POST使用),规范要求浏览器&# 34;预检"请求,使用HTTP OPTIONS请求方法从服务器请求支持的方法,然后,在"批准"从服务器,使用实际的HTTP请求方法发送实际请求。服务器还可以通知客户端"凭证" (包括Cookie和HTTP身份验证数据)应与请求一起发送。
因此,在您的服务器中,您需要执行以下操作:
{{1}}
这是一篇关于这个主题的文章: