axios.get не возвращает данные - PullRequest
2 голосов
/ 18 октября 2019

Я использую реагирование, экспресс и паспорт для управления потоком аутентификации.

Я недавно разделил фронтенд и бэкэнд на два приложения в Heroku, и я пытаюсь соединить обе стороны (до того, какбыла папка клиента внутри папки сервера). При локальном тестировании мой бэкэнд работает после входа в систему с доступом к http://localhost:5000/auth/current_user,, но когда я использую axios и вызов из моего действия приставки, он не возвращает никакого ответа.

Это мой код с лицевой стороны:

export const fetchUser = () => async dispatch => {
  try {
    const res = await axios.get(
      process.env.REACT_APP_API_URL + "/auth/current_user"
    );
    console.log("fetchUser: ", res);
    dispatch({ type: FETCH_USER, payload: res.data });
  } catch (e) {
    if (e.response) {
      console.log("fetchUser:", e.response);
    }
  }
};

Когда я регистрирую свою серверную часть, чтобы увидеть, есть ли сеанс, я получаю {} в качестве ответа. Иногда, случайно, я получаю паспортную информацию { passport: { user: '5da9b04eb086af53103ec4e9' } }

  app.get("/auth/current_user", (req, res) => {
    console.log(req.session);
    res.send(req.user);
  });

Заголовки из Chrome следующие (без какого-либо ответа ...): Заголовки Chrome

Было бы здорово, если бы кто-нибудь смог мне помочь!

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Вместо всего этого вы можете использовать cors npm следующим образом.

npm install --save cors

var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
/* your regular routes go here */
0 голосов
/ 18 октября 2019

Я наконец-то нашел решение проблемы ... Похоже, это была проблема CORS. Я не совсем понимаю это ясно, но изучу это.

Таким образом, частично решение было в следующем ответе: Express + Passport.js: req.user НЕ УКАЗАН

При этом файлы cookie появились в моем журнале консоли на лицевой стороне. Для полноценной работы мне пришлось добавить исходный домен к cors.

В заключение я добавил в свой index.js на стороне сервера:

app.use(
  cors({
    methods: ["GET", "POST"],
    credentials: true,
    origin: "http://localhost:3000"
  })
);

И этот конфиг в мойaxios get:

    const config = {
      withCredentials: true,
      headers: {
        "Content-Type": "application/json"
      }
    };
...