Я получил ошибку CORS — cors () не работает

#node.js #axios #cors

#node.js #axios #cors

Вопрос:

После входа в систему server.js , в случае успеха отображается компонент React. Я хочу получать информацию о пользователе из компонента React.

Сервер использует порт 5000, а клиент — 3000. Клиентский компонент получает информацию следующим образом.

 const Main = () => {

  async function makeGetRequest() {
    let res = await axios.get('http://localhost:5000/auth/google/callback');

    let data = res.data;
    console.log(data, 'data');
  }
  makeGetRequest();

  return (
    <div>
      <h2>Main Page</h2>
        Main Page
    </div>
  );
};

export default Main;
  

Я знаю, что в express есть cors, и пытался использовать его server.js , но это не работает.

Я пытался использовать отдельные параметры cors и cors, но это не работает.

 
// server.js

const app = express();

const corsOptions = {
  origin: 'http://localhost:5000',
  credentials: true,
};

app.use(cors(corsOptions));

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept'
  );
  next();
});

app.use(
  session({
    secret: process.env.SECRET_CODE,
    resave: false,
    saveUninitialized: true,
    cookie: {
      maxAge: 60 * 60 * 1000,
    },
  })
);

app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());

app.use('/', indexRouter);
app.use('/auth', authRouter);
app.use('/main', mainRouter);

...
  

Я получил эти ошибки:

введите описание изображения здесь

Ответ №1:

Источник cors должен использовать порт 3000, потому что это домен, с которого вы хотите разрешить запросы.

Также вам не нужно устанавливать заголовки cors вручную, cors () обрабатывает это за вас.