为了账号安全,请及时绑定邮箱和手机立即绑定

Express.js CORS 配置,PUT 不起作用?

Express.js CORS 配置,PUT 不起作用?

泛舟湖上清波郎朗 2022-05-14 15:14:32
我在后端有一个 React 应用程序和 Nodejs(Express)。部署到主机服务器后,我为更新某些文档所做的功能无法正常工作。它给出了CORS错误:我有这行代码来处理 server.js 中的 CORS 策略:app.use((req, res, next) => {  res.set({"Access-Control-Allow-Origin" : "*",            "Access-Control-Allow-Methods" : "HEAD, OPTIONS, GET, POST, PUT, PATCH, DELETE",            "Access-Control-Allow-Headers" : "Content-Type, Authorization, X-Requested-With"})  next();});GET 和 POST 方法都可以,但对 PUT 不起作用(不知道 Delete 是否有效没有尝试过)我在这个问题上花了很多时间;试过这个:https ://stackoverflow.com/a/42463858/11896129在网上找了一堆解决方案,尝试从 IIS web.config 文件配置它,没有解决我的问题。我可能会错过哪个部分?
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

MDN 所述:

此外,对于可能对服务器数据造成副作用的 HTTP 请求方法(特别是对于GET 以外的 HTTP 方法,或者对于某些 MIME 类型的 POST 使用),规范要求浏览器“预检”请求,请求支持的方法使用 HTTP OPTIONS 请求方法从服务器发送,然后,在服务器“批准”后,使用实际 HTTP 请求方法发送实际请求。

所以你必须回答预检请求:

  app.options("*", (req, res) => {
    res.status(200).send("Preflight request allowed");
  });

在此处阅读有关预检请求的更多信息。


查看完整回答
反对 回复 2022-05-14
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

您看到的错误很可能No 'Access-Control-Allow-Origin' header is present来自预检 OPTIONS 请求,该请求很可能甚至没有到达您的快速后端,而是由前端的网络服务器处理。

要么安排 OPTIONS 请求也被中继到您的 web 服务器配置中的 express 后端,要么指示 web 服务器使用所需的标头对其进行响应。

检查这些:

https://support.plesk.com/hc/en-us/articles/115001338265-How-to-set-up-CORS-cross-origin-resource-sharing-in-Plesk-for-Linux-

https://support.plesk.com/hc/en-us/articles/360005431913-Is-it-possible-to-enable-CORS-cross-origin-resource-sharing-on-Plesk-for-Windows

https://talk.plesk.com/threads/iis-cors-configuration-problem-for-node-js-backend.355677/


查看完整回答
反对 回复 2022-05-14
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这应该可行,我使用了这个 CORS 配置


  app.use(function(req,res,next){

    res.header("Access-Control-Allow-Origin", "*");

    res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, PATCH");

    res.header("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization, X-Requested-With");


    next();

  });


查看完整回答
反对 回复 2022-05-14
  • 3 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号