我在NodeJS和Vue.js的前端都遇到了CORS问题. 问题是

Access to XMLHttpRequest at 'http://localhost:3007/auth/login' from origin 'http://localhost:5173' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

帮我解决这个问题

让我分享我的代码,我已经try 过了.

import express from "express";
import mongoose from "mongoose";
import { config } from "dotenv";
import { router as loginRoute } from "./routes/login.js";
import cors from "cors";
import "dotenv/config.js";

const app = express();
app.use(express.json());

// Server connect
app.listen(3007, () => {
    console.log(`I m listening on 3007`);
});

// route
app.use("/auth", loginRoute);

// CORS Cross Orgin Resource Sharing

app.use(
 cors({
     origin: "http://localhost:5173",
     optionsSuccessStatus: 200,
     methods: ["GET", "POST", "DELETE", "UPDATE", "PUT", "PATCH"],
     preflightContinue:false
 })
);

我试了app.use(cors());次这个代码,但还是不起作用

推荐答案

在定义您的路由之前,请确保放置CORS中间件,以确保它适用于所有路由.使用此配置,所需的Access-Control-Allow-Origin头部将包含在您的服务器的响应中,从而允许您的Vue.js前端访问资源.

您可以执行以下操作:

import express from "express";
import cors from "cors";
import { router as loginRoute } from "./routes/login.js";

const app = express();
app.use(express.json());

// CORS configuration
app.use(
 cors({
     origin: "http://localhost:5173",
     optionsSuccessStatus: 200,
     methods: ["GET", "POST", "DELETE", "UPDATE", "PUT", "PATCH"],
     preflightContinue: false
 })
);

// Server connect
app.listen(3007, () => {
    console.log(`I'm listening on 3007`);
});

// route
app.use("/auth", loginRoute);

Node.js相关问答推荐

DocuSign:调用createEntaine时,RequestJWTApplicationToken返回401 AUTHORIZATION_INVALID_TOKEN

Firebase-admin筛选器.或只考虑第一个WHERE子句

如何在ejs模板中使用循环显示多个结果?

车把模板引擎循环问题

运行本地移动自动化测试时,在onPrepare钩子中,ERROR @wdio/cli:utils: A service failed in the 'onPrepare'

为什么 nginx 不将我的 react index.html 作为后备服务

MongoDB - 查找查询以判断是否存在少量字段,结合字段上的 AND

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

如何在不使用位置运算符 $ 的情况下更新 mongodb 文档中数组中的嵌套文档?

FirebaseCloudMessaging : PlatformException (PlatformException(null-error, Host platform returned null value for non-null return value., null, null))

Nodejs-console.error vs util.debug

如何使用 mocha.js 模拟用于单元测试的依赖类?

Node.js + Express 上的多个视图路径

如何使用 gulp-uglify 缩小 ES6 函数?

使用 NodeJS 将新对象附加到 DynamoDB 中的 JSON 数组

如何在 Joi 字符串验证中使用枚举值

需要 node-gyp 的 npm install 在 Windows 上失败

续集findbyid不是一个函数,但显然findAll是

我无法全局安装 nodemon,nodemon无法识别

NodeJS:如何调试检测到 EventEmitter 内存泄漏.添加了 11 个侦听器