Заголовки HTTP являются неотъемлемой частью функционирования сети. Они содержат информацию о запросе (например, пользовательский агент, используемый для выполнения запроса, контент, который будет принят запрашивающей стороной, и язык). Они содержат информацию об ответе (например, тип контента, устанавливаемые файлы cookie и информацию о кэшировании). Они также могут предоставлять общие заголовки, которые охватывают такие вещи, как IP-адрес сервера и метод REST.

Чтобы увидеть эти заголовки, перейдите в инструменты разработчика Chrome ›› сеть ›› перезагрузка ›› щелкните файл ›› просмотрите раздел «Заголовки». Это должно выглядеть примерно так.

В следующем примере кода мы поговорим о заголовках запроса x-auth-token и user-agent и заголовке ответа set-cookie.

const express = require('express')
const app = express()
const port = 3000

app.get("/authRoute", (req, res) => {
    //KEEP TRACK OF ACCESSES
    console.log(req.header("user-agent"));
    const token = req.header("x-auth-token");
    if (token == null) {
        return res.status(400).send("No Auth Token Provided");
    } else if (token !== "password") {
        return res.status(401).send("Incorrect Token Provided")
    } else {
        res.setHeader("set-cookie", "username=bob, Max-Age=160000")
        res.setHeader("custom-header", "hello world!")
        res.send("Welcome!");
    }
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
})

Представьте, что у нас есть базовый сервер узлов express.js. У нас есть один маршрут, который позволяет вам войти, только если вы предоставите «пароль» x-auth-token в заголовках вашего запроса. Мы также регистрируем пользовательский агент, чтобы отслеживать, как осуществляется доступ к нашему серверу. Я буду использовать Postman для проверки всех трех случаев.

Нет токена аутентификации

В нашем первом запросе мы не предоставляем x-auth-token и получаем ошибку 400, означающую, что мы не предоставили аутентификацию.

Неправильный токен аутентификации

Далее мы предоставим заголовок x-auth-token, но у нас будет неправильное значение, поэтому мы получим 401, так как мы не авторизованы для доступа к странице с текущим токеном аутентификации.

Правильный токен аутентификации

Наконец, мы предоставляем правильный токен аутентификации, наш сервер приветствует нас кодом 200 и сообщением «Добро пожаловать!» он также отправляет обратно файл cookie, используя заголовок ответа set-cookie, и мы также предоставляем собственный настраиваемый заголовок.

Итак, у нас есть это, теперь мы можем использовать заголовки для файлов cookie, метрик и маршрутизации. Это ссылка на некоторые обычно используемые заголовки, но в целом заголовки могут быть такими, о которых договорятся сервер и клиент, поэтому, если вы владеете логикой клиента и сервера, вы можете сделать заголовки какими хотите.

Некоторые другие интересные вещи, которые вы могли бы попытаться выполнить с помощью заголовков HTTP: проверка пользовательского агента, чтобы увидеть, поступает ли запрос с мобильного или настольного устройства, и направить его в нужное представление html, проверка Content-Length ответа и предварительно выделяйте память для хранения всего этого вместо того, чтобы читать контент по частям через поток и любые другие классные приложения, которые вы можете придумать, и если у вас есть какие-либо идеи, не стесняйтесь комментировать их ниже!