@historydev
Редактирую файлы с непонятными расширениями

Как отправить куки с помощью fetch и исправить ошибку 404 post?

Здравствуйте. Я пытаюсь отправить пост на сервер который юзает для авторизации jwt токен, но получаю post 404.
Вот здесь логика установки токена и юзера:
app.use((req, res, next)=>{
  const jwtToken = req.cookies.JWT_TOKEN;

  if(!jwtToken) {
    next();
    return;
  }

  jwt.verify(jwtToken, SECRET, (err, decoded)=>{
    if(err) {
      next(err);
      return;
    }
    const sessionData = decoded.data;
    let userId;

    if (sessionData['modx.user.contextTokens']) {
      if (sessionData['modx.user.contextTokens']['web'] > 0) {
        userId = sessionData['modx.user.contextTokens']['web'];
      }else if($dataarr['modx.user.contextTokens']['mgr'] > 0) {
        userId = sessionData['modx.user.contextTokens']['mgr'];
      }else {
        return res.redirect('/signin');
      }
    }

    req.user = {userId};
    next();
  });
});

app.use((req, res, next)=>{
  if (!req.user || !req.user.userId) {
    next(new Error('Access Denied'));
  }else {
    next();
  }
});


Вот get запрос который здесь уже был и он работает:

app.get("/:id?", function(req, res){
  const room = {id:parseInt(req.params.id||0)};
  const userid = req.user.userId;

  console.log('USEEEEEEEEEEEEEEEEEEEEEEEEEER ID', userid);

  pool.query("SELECT * FROM modx_user_attributes WHERE id = ?", [userid], function(err, [userData]) {
    if(err) return console.log(err);
    //console.log('userData ', userData);

    const token = jwt.sign({
      data: {userId: userid},
    }, SECRET);

    res.render("index.hbs", {
        appdata: {token, room, user: userData},
        finalScripts,
    });
  });
});


А вот мой поинт, но я не могу достучаться до него:
app.post('/writeVideo', (req, res) => {
    req.video.mv('test.wav', (err) => {
      if (err) {
        res.send(err);
      } else {
        res.send({
          success: 'file write'
        })
      }
    });
})


А здесь я пытаюсь постучаться в поинт:

fetch('/writeVideo', {
            method: 'POST',
            credentials: "same-origin",
            headers: {
              'Content-type': 'application/json',
            },
            body: {
              user: {
                userId: 8
              },
              video: audioBlob
            }
          }).then(data => data.json()).then(data => console.log(data));


Я почитал немного, советуют просто юзать credentials: 'same-origin' || 'include', однако мне это не помогло, я пробовал устанавливать заголовки Cookie: 'JWT_TOKEN=token' разными способами - не сработало. Подскажите пожалуйста, как мне поступить.

Спасибо.
  • Вопрос задан
  • 183 просмотра
Пригласить эксперта
Ответы на вопрос 1
rqdkmndh
@rqdkmndh
Web-разработчик
Если вы проанализируете как у вас работает вот эта гениальная конструкция:
if (!req.user || !req.user.userId) {
то возможно, получите ответ на свой вопрос
Ответ написан
Ваш ответ на вопрос

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

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