NodeJS CORS无访问控制允许来源

klr1opcd  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(196)

对印前检查请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
我最近很难解决CORS错误,我承认我还在学习Express和服务器编程。我试图向数据库提交一个有效载荷,但一旦我在服务器上请求,chrome返回标题错误。我已经尝试了几种修复方法,比如在corsOptions的原点添加通配符,遵循corsx 1 e0f1x的指南。我甚至在我的一个路由文件上添加了一个require cors,但仍然不起作用。
下面是我正在使用的当前代码
index.js

const corsOptions ={
    origin:'http://localhost', 
    credentials:true,            //access-control-allow-credentials:true
    optionSuccessStatus:200,
}

const app = express();

app.use(cors(corsOptions));
app.use(express.json());
const { StatusCodes, ReasonPhrases } = require("http-status-codes");

app.use(cors());
const server = http.createServer(function (req, res) {
    console.log('A request was made: ' + req.url);
    res.writeHead(200, {'Content-Type': 'text-plain'});
    res.end('Response ended'); // ends the response
});
server.listen(3000, 'localhost');

app.get("/", (req, res) => {
    res.status(StatusCodes.OK).json({
      title: "Waiting for request...",
      status: StatusCodes.OK,
    });
  });

const ups = require('./routes/ups.js');
app.use("/ups", cors(), ups);

  app.all("*", (req, res, next) => {
    res.status(StatusCodes.METHOD_NOT_ALLOWED).json({
      status: StatusCodes.METHOD_NOT_ALLOWED,
      title: ReasonPhrases.METHOD_NOT_ALLOWED,
    });
    next();
  });

ups.js

const cors = require('cors');
const { StatusCodes, ReasonPhrases } = require("http-status-codes");

module.exports = () => {
    router.post("/ups", cors(),  (req, res) => {
      if(
        req.body == null ||
        req.body.id == null ||
        req.body.available == null
      ) {
        console.log("error");
      }

      var id = req.body.id;
      var av = req.body.available;

      //Perform Query Ops
      var sql = "UPDATE `pc_status` SET available = " + av + " WHERE `id` = " + id + "";
      db.query(sql, function(err, result) {
      if (err) throw err;
        console.log('record inserted');
        console.log(req.body.id);
        console.log(req.body.available);
        //result.redirect(201 ,'/');
      });

    });
    return router;
};
mzsu5hc0

mzsu5hc01#

下面是对您代码的一些更新:
index.js

const corsOptions ={
    origin:'http://localhost:3000' // mention the port of front-end, 
    credentials:true,            //access-control-allow-credentials:true
    optionSuccessStatus:200,
}

const app = express();

app.use(cors(corsOptions));
app.use(express.json());
const { StatusCodes, ReasonPhrases } = require("http-status-codes");

app.use(cors()); 
const server = http.createServer(function (req, res) {
    console.log('A request was made: ' + req.url);
    res.writeHead(200, {'Content-Type': 'text-plain'});
    res.end('Response ended'); // ends the response
});
server.listen(3000, 'localhost');

app.get("/", (req, res) => {
    res.status(StatusCodes.OK).json({
      title: "Waiting for request...",
      status: StatusCodes.OK,
    });
  });

const ups = require('./routes/ups.js');
app.use("/ups", c̶o̶r̶s̶(̶)̶, ups); // when you provide cors on .use(), you don't need to specify on each routes!

  app.all("*", (req, res, next) => {
    res.status(StatusCodes.METHOD_NOT_ALLOWED).json({
      status: StatusCodes.METHOD_NOT_ALLOWED,
      title: ReasonPhrases.METHOD_NOT_ALLOWED,
    });
    next();
  });

ups.js

const cors = require('cors');
const { StatusCodes, ReasonPhrases } = require("http-status-codes");

module.exports = () => {
    router.post("/ups", cors(),  (req, res) => {
      if(
        req.body == null ||
        req.body.id == null ||
        req.body.available == null
      ) {
        console.log("error");
      }

      var id = req.body.id;
      var av = req.body.available;

      //Perform Query Ops
      var sql = "UPDATE `pc_status` SET available = " + av + " WHERE `id` = " + id + "";
      db.query(sql, function(err, result) {
      if (err) throw err;
        console.log('record inserted');
        console.log(req.body.id);
        console.log(req.body.available);
        //result.redirect(201 ,'/');
      });

    });
    return router;
};

希望你找到解决办法,如果仍然没有固定让我知道..

相关问题