后端的 Heroku 和前端的 Vercel 部署 CORS 问题

时间:2021-04-07 17:44:42

标签: database heroku heroku-postgres vercel

我在部署全栈顶石时遇到了一些问题。我将两端分别部署到 Vercel 和 Heroku。我在本地运行它时没有任何问题。当我注册一个已部署的用户时,它会执行 POST 并将该用户创建到数据库,但是当我使用该用户登录时,我收到以下 CORS 错误:

从源“https://mind-your-fitness.vercel.app”访问“https://desolate-reaches-15214.herokuapp.com/api/auth/login”已被 CORS 阻止策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。 auth-api-service.js:48 POST https://desolate-reaches-15214.herokuapp.com/api/auth/login net::ERR_FAILED

这是来自后端的我的 App.js。我不确定你们还需要什么帮助:

    require("dotenv").config();
const express = require("express");
const morgan = require("morgan");
const cors = require("cors");
const { CLIENT_ORIGIN } = require("./config");
const helmet = require("helmet");
const { NODE_ENV } = require("./config");
const workoutsRouter = require("./workouts/workouts-router");
const usersRouter = require("./users/users-router");
const authRouter = require("./authentication/auth-router");

const app = express();

const morganOption = NODE_ENV === "production" ? "tiny" : "common";
app.use(express.json());
app.use(morgan(morganOption));
app.use(cors());
app.use(helmet());

app.use("/api/auth", authRouter);
app.use("/api/users", usersRouter);
app.use("/api/workouts", workoutsRouter);

app.use(function errorHandler(error, req, res, next) {
  let response;
  if (NODE_ENV === "production") {
    response = { error: { message: "server error" } };
  } else {
    console.error(error);
    response = { message: error.message, error };
  }
  res.status(500).json(response);
});

module.exports = app;

0 个答案:

没有答案