Есть ли способ присоединить JSON Web Tokens к запросу POST в HTML-форме? - PullRequest
0 голосов
/ 21 апреля 2019

Я создаю блог, используя node.js (без Express), где пользователи могут комментировать сообщения. Я требую, чтобы пользователи вошли в систему, прежде чем они смогут комментировать, поэтому я использую веб-токены JSON (созданные с помощью модуля узла jsonwebtoken) для аутентификации их статуса входа. После успешного входа в систему в файл заголовка ответа страницы добавляется файл cookie, содержащий JWT, например:

res.writeHead(302, {"Set-Cookie": `jwt=${MYTOKENISHERE}; max-age=9000; HttpOnly`, 
Location: "/blog/blog.html"
}); 
res.end();

Когда я проверяю файлы cookie веб-страницы в своем браузере, я вижу закодированный JWT - пока, очень хорошо:

Ссылка на скриншот: https://i.ibb.co/MBzw5jX/cookies.png

Проблема возникает, когда вошедший в систему пользователь пытается оставить комментарий. Я обрабатываю это с помощью запроса POST через форму HTML, но по какой-то причине JWT не появляется в объекте запроса, который достигает моего сервера / маршрутизатора. Вот фрагмент кода моего роутера:

const cookie = require('cookie');

if (method === "POST") {
    if (request.url.includes("/create/comment")) {
        let cookies = cookie.parse(request.headers.cookie);
        console.log("COOKIES :", cookies);
        }
    }
//Expected console.log() output: 

COOKIES: { 
    jwt: [THE ENCODED JWT STRING],
    _ga: 'GA1.1.1615891668.1553812077', // random google analytics cookie
    gid: 'GA1.1.1919987325.1555742391' // random google analytics cookie
}
// Actual console.log() output: 

COOKIES: { 
    _ga: 'GA1.1.1615891668.1553812077', // random google analytics cookie
    gid: 'GA1.1.1919987325.1555742391' // random google analytics cookie 
}

Как видите, JWT отсутствует. Я попытался заменить запрос формы HTML на XmlHttpRequest из DOM, но я все еще получаю тот же результат. JWT выглядит нормально в заголовках запросов GET, эта проблема возникает только с запросами POST.

Как лучше всего передать закодированную строку веб-токена JSON с клиента на сервер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...