节点:允许PUT的CORS

时间:2017-02-26 00:55:50

标签: javascript node.js express cors

我正在尝试对我的其余api端点进行PUT调用,并收到此错误:

Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.

我使用此解决方案启用了CORSenable-cors,它适用于POST

如何为PUT实现相同的目标?

感谢。

2 个答案:

答案 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}}

这是一篇关于这个主题的文章:

Cross-Origin Requests in Express.JS