Я уже много гуглил на эту тему, читал различные статьи об этом заголовке, его использовании в Heroku и проектах, основанных на Django.
Однако в голове до сих пор все запутано.
- Какова цель этого заголовка?
- Нарушает ли это конфиденциальность пользователей?
- Может ли это помочь в отслеживании пользователя?
http
http-headers
Стефан
источник
источник
Ответы:
Когда вы используете веб-сервис, к которому обращаются клиенты, может быть сложно сопоставить запросы (которые видит клиент) с журналами сервера (которые сервер может видеть).
Идея
X-Request-ID
заключается в том, что клиент может создать случайный идентификатор и передать его серверу. Затем сервер включает этот идентификатор в каждый оператор журнала, который он создает. Если клиент получает сообщение об ошибке, он может включить идентификатор в отчет об ошибке, позволяя оператору сервера искать соответствующие операторы журнала (без необходимости полагаться на временные метки, IP-адреса и т. Д.).Поскольку этот идентификатор генерируется (случайным образом) клиентом, он не содержит конфиденциальной информации и, следовательно, не должен нарушать конфиденциальность пользователя. Поскольку уникальный идентификатор создается для каждого запроса, он также не помогает отслеживать пользователей.
источник
Назначение: идемпотентность
С идентификатором, который изменяется для каждого запроса, но остается неизменным в случае повторной попытки запроса, получатель может гарантировать, что запрос не будет обработан более одного раза.
Это цитата некоего поставщика API:
Если вы сделаете его случайной строкой, уникальной для каждого запроса , это не повлияет ни на вашу конфиденциальность, ни на отслеживание.
Если вы хотите узнать больше о возможностях идемпотентности, прочитайте эту содержательную статью .
NB. Как отмечает Стефан Кёгль, этот заголовок не стандартизирован - отсюда (устаревший) префикс «X-».
источник
Объяснение с использованием рассказа / аналогии
Ваш Интернет набирает обороты (как обычно), так что вы звоните в Tellstra и ждете по телефону вечно ... наконец, вы сдаетесь и в отчаянии бросаете трубку. (Это неудавшийся вызов. Об этом есть запись в журнале вызовов Tellstra.)
"Все, я звоню омбудсмену!"
Но у Обмудсмана есть тысячи записей звонков, которые нужно просмотреть (все неудавшиеся запросы Tellstra). Если вы скажете им, что звонили в Telstra и что ваш звонок был неудачным, этого будет недостаточно: как омбудсмен узнает из всех записей разговоров в Tellstra, какой из них был вашим, чтобы его можно было расследовать дальше? ?
Вот где появляется X-Request-ID - когда вы звоните в Tellstra, вы передаете случайное число (X-Request-ID), и это регистрируется в записях Tellstra. Таким образом, омбудсмен (имеющий доступ ко всем записям) сможет найти ваш входящий звонок и выяснить, что пошло не так.
Применение истории к HTTP
То же самое относится к HTTP-запросам - это идентификатор, который помогает вам (как внутреннему разработчику) выяснить, что пошло не так, когда клиент выдает вам ошибку или большой отчет.
Это основное его резюме. Любые вопросы и т. Д. Просто оставьте комментарий, и я надеюсь прояснить это.
источник
Этот заголовок запроса может использоваться для синхронизации. Допустим, вы создали список ToDo, который предлагает автономную работу. Ваш пользователь создает 3 элемента, и каждому из них дается уникальный UUID в автономном приложении. Когда сетевое подключение доступно, записи отправляются на сервер POST и возвращаются соответствующие идентификаторы, автоматически сгенерированные из базы данных. Затем вы можете заменить идентификаторы в своем приложении (например, атрибут «id» элемента HTML «li»).
источник