Задать вопрос
@Kermet123

Как установить заголовки в express.js?

Есть простое приложение на react.js localhost:3000
Есть простое серверное приложение на express.js localhost:5000
На сервере прописаны заголовки для cors, но при запросе в браузере все равно вылетает ошибка:
Access to XMLHttpRequest at 'localhost:5000/auth/login' from origin 'localhost:3000' 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.

Что я делаю не так?
Я знаю про расширение(пакет) cors, но хотел бы решить вопрос без его установки, т.к. хочу понять механизм работы cors.
В подавляющем большинстве ответов от гугл необходимо добавить Access-Control-Allow-Origin', '*'. Но у меня уже указан этот заголовок.
Правильно ли я понимаю, что сервер localhost:3000 должен сделать прерфлай запрос на localhost:5000 и в ответ получить заголовок Access-Control-Allow-Origin, значение которого должен быть как раз localhost:3000 или любой хост(*) ?

Запрос на сервер:
const onLogin = (e) => {
    e.preventDefault()
    console.log(username, password)
    axios
      .post('http://localhost:5000/auth/login', {
        headers: {
          'Content-Type': 'application/json',
        },
        body: {
          username: username,
          password: password,
        },
      })
      .then((res) => {
        console.log(res)
      })
  }


Главный файл express.js
const express = require('express')
const authRouter = require('./authRouter')

const PORT = process.env.PORT | 5000

const app = express()

app.use(express.json())
app.use('/auth', authRouter)
app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*')
  res.setHeader('Access-Control-Allow-Methods', '*')
  res.setHeader('Access-Control-Allow-Headers', '*')
  res.setHeader('Access-Control-Allow-Credentials', true)
  next()
})

const start = () => {
  try {
    app.listen(PORT, () => {
      console.log('Server was started on port ', PORT)
    })
  } catch (error) {
    console.log(error)
  }
}

start()
  • Вопрос задан
  • 336 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы