Отправка html-страницы в качестве ответа на вызов axios с помощью экспресс - PullRequest
0 голосов
/ 07 марта 2019

Я делаю вызов axios, чтобы проверить существующий токен JWT.Если он существует, я бы хотел, чтобы моя панель администратора была перенаправлена ​​на страницу входа.К настоящему моменту у меня есть мой бэкэнд, подобный этому:

//The admin panel page. check for valid JWT token, otherwise prompt to login page
router.use("/", (req,res)=>{
    var token = req.headers.authorization;
  if (token && token.startsWith("Bearer ")) {
    // Remove Bearer from string
    token = token.slice(7, token.length);
  }
  if (token) {
    jwt.verify(token, "secret", (err, decoded) => {
      if (err) {
        res.sendFile(path.join(__dirname , '../views/login.html'));
      } else {
        User.findOne({
          _id: decoded.id
        }).then(function (user) {
            res.sendFile(path.join(__dirname , '../views/admin.html'));
        })
      }
    });
  } else {
    res.sendFile(path.join(__dirname , '../views/login.html'));
  }
});

, который работает нормально, но в моем интерфейсе результат, который я получаю в axios, является объектом, и страница не отображается, но ответ сохраняется в памяти.

Object { data: "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n 

Весь HTML-документ, который я отправляю, находится в поле данных ответа.

Вот мой аксиальный вызов:

function onPage(){
    if(localStorage.getItem('token')){
    const Url = "http://127.0.0.1:8000/admin/";
  const config = {
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
      "Authorization": "Bearer " + localStorage.getItem('token')
    }
  };
  axios.post(Url, {}, config).then(function (response) {
      console.log(response);
    })
    .catch(error => {});
  }
  }

1 Ответ

1 голос
/ 07 марта 2019

Весь HTML-документ, который я отправляю, находится в поле данных ответа.

Вы можете сделать это, используя DOM или библиотеку по вашему выбору, которая упаковывает DOM в более простой API. Например, document.write(response.data) будет делать это, потому что после основного анализа страницы document.write делает неявное document.open, которое стирает страницу и заменяет ее строкой.

Тем не менее, если вы хотите выполнить POST и заменить страницу полученным полным HTML, вы можете просто захотеть стандартный элемент form, так как это поведение по умолчанию.

...