Как вы используете devServer.proxy в Vue?

В настоящее время я пытаюсь передать свои запросы из моего приложения Vue, чтобы я мог отправлять файлы cookie с сервера, который существует отдельно от моего внешнего интерфейса.

У меня есть интерфейс на порту 8080 и сервер на порту 3000. Однако, когда я пытаюсь настроить свой прокси для использования порта 3000 в Vue с помощью devServer.proxy, он все еще отправляет запрос на 8080.

Вот мой код в vue.config.js:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'https://localhost:3000',
        ws: true,
        changeOrigin: true
      }
    }
  }
}

Вот мой запрос axios:

axios.post(`/api/auth/login/`, loginDetails, {
        withCredentials: true, 
        credentials: 'include'
    })
    .then(function (response) {
        console.info('login response: ', response)
    })
    .catch(error => {
        console.error(error)
    });

Вот ошибка, которую я получаю, которая показывает, что интерфейс все еще отправляет на 8080:

Я также пытался использовать следующее в vue.config.js и не имел префикса к URL-адресу запроса, но безрезультатно.

module.exports = {
  devServer: {
    proxy: 'http://localhost:3000'
  }
}

Вот документация, которую я использую https://cli.vuejs.org/config/#devserver

"по-прежнему отправляет запрос на 8080" - так и должно быть, так работает прокси. Неизвестно, почему в вашем случае 404.

Estus Flask 23.01.2023 15:40

Я вижу, я сейчас совсем запутался. Запрос будет успешным, если я вручную изменю axios req на url localhost: 3000/auth/login. Но когда я пытаюсь использовать прокси, он выдает 404.

Jeremy Kung 23.01.2023 17:03

Вы можете проверить журналы как прокси, так и сервера. Вы не показали ответ, это может дать некоторое представление о том, в какой момент что-то пошло не так. Это регулярное выражение и должно быть '^/api' вместо '/api', в противном случае это делается так, как вы делали, и ожидалось, что оно сработает.

Estus Flask 23.01.2023 19:37

Спасибо, я понял это после просмотра логов сервера. Мне не пришло в голову проверить там, так как я предположил, что 404 означает, что он даже не может найти сервер. Проблема заключалась в том, что он был проксирован с помощью /api/auth/login, но мой серверный маршрут имел только /auth/login, поэтому он отправил 404. Я не уверен, правильно ли это, но я просто добавил свои серверные маршруты с /api, и это сработало.

Jeremy Kung 24.01.2023 04:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение:

Изучив журналы сервера, я обнаружил, что прокси-сервер работает и пытается найти маршрут /api/auth/login на моем сервере. Однако у меня был только /auth/login, поэтому сервер отправил статус 404.

Я не уверен, что это правильный способ сделать это, но я просто добавил маршрут сервера с помощью /api, и это сработало так:

app.use('/api/auth', authRouter)

Раньше это выглядело так:

app.use('/auth', authRouter)

Спасибо Estus Flask за советы в комментариях.

Другие вопросы по теме