apache_request_headers — Осуществить выборку всех заголовков HTTP запросов


Как отправить или получить HTTP заголовки запроса (браузера или другого клиента) на PHP

HTTP заголовки отправляются практически всегда, при каждом запросе любой веб-страницы. Они позволяют сообщить браузеру или другому клиенту информацию о выдаваемом контенте, могут содержать ряд настроек. Известно, что заголовки бывают двух типов:

  • request headers — заголовки запроса, посылаются клиентом (браузером) на сервер;
  • response headers — заголовки ответа, посылаются сервером клиенту (в браузер).

В этой статье рассматриваются заголовки первого типа — заголовки запроса.

Как отправить HTTP заголовки запроса

Это можно сделать, если используется свой клиент для запроса на сервер. Например, это может быть простой запрос при помощи библиотеки CURL:

Также надо сказать, что у библиотеки CURL есть свои предопределенные константы, которые читаются сервером как заголовки. Например, можно отправить HTTP заголовок User-Agent или другие при помощи подобного кода:

Как получить HTTP заголовки запроса

Получить заголовки может понадобиться для разных целей, для этого используются специальные возможности языков программирования. Для получения заголовков в PHP есть несколько функций. Ниже приводятся функции для получения заголовков на PHP:

  • getallheaders — возвращает все заголовки HTTP-запроса;
  • apache_request_headers — получает список всех заголовков HTTP-запроса.

Для получения заголовков можно использовать любую функцию. Часто применяется функция getallheaders:

Однако она работает не всегда, например, может возникнуть ошибка «Call to undefined function getallheaders()». Это означает, что функция не определена и необходимо использовать другие функции, либо обновить PHP. Перед использованием этой функции можно проверить существует ли она – функцией function_exists. Если никакая функция не сработает – можно выбрать все заголовки из массива $_SERVER, они помечаются префиксом «HTTP_».

Как видно из статьи, работать с HTTP заголовками довольно просто, для этого достаточно использовать специальные средства языка программирования PHP.

XMLHttpRequest: кросс-доменные запросы

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/fetch-crossorigin.

Обычно запрос XMLHttpRequest может делать запрос только в рамках текущего сайта. При попытке использовать другой домен/порт/протокол – браузер выдаёт ошибку.

Существует современный стандарт XMLHttpRequest, он ещё в состоянии черновика, но предусматривает кросс-доменные запросы и многое другое.

Большинство возможностей этого стандарта уже поддерживаются всеми браузерами, но увы, не в IE9-.

Впрочем, частично кросс-доменные запросы поддерживаются, начиная с IE8, только вместо XMLHttpRequest нужно использовать объект XDomainRequest.

Кросс-доменные запросы

Разберём кросс-доменные запросы на примере кода:

  1. Мы создаём XMLHttpRequest и проверяем, поддерживает ли он событие onload . Если нет, то это старый XMLHttpRequest , значит это IE8,9, и используем XDomainRequest .
  2. Запрос на другой домен отсылается просто указанием соответствующего URL в open . Он обязательно должен быть асинхронным, в остальном – никаких особенностей.


Контроль безопасности

Кросс-доменные запросы проходят специальный контроль безопасности, цель которого – не дать злым хакерам™ завоевать интернет.

Серьёзно. Разработчики стандарта предусмотрели все заслоны, чтобы «злой хакер» не смог, воспользовавшись новым стандартом, сделать что-то принципиально отличное от того, что и так мог раньше и, таким образом, «сломать» какой-нибудь сервер, работающий по-старому стандарту и не ожидающий ничего принципиально нового.

Давайте, на минуточку, вообразим, что появился стандарт, который даёт, без ограничений, возможность делать любой странице HTTP-запросы куда угодно, какие угодно.

Как сможет этим воспользоваться злой хакер?

Он сделает свой сайт, например http://evilhacker.com и заманит туда посетителя (а может посетитель попадёт на «злонамеренную» страницу и по ошибке – не так важно).

Когда посетитель зайдёт на http://evilhacker.com , он автоматически запустит JS-скрипт на странице. Этот скрипт сделает HTTP-запрос на почтовый сервер, к примеру, http://gmail.com . А ведь обычно HTTP-запросы идут с куками посетителя и другими авторизующими заголовками.

Поэтому хакер сможет написать на http://evilhacker.com код, который, сделав GET-запрос на http://gmail.com , получит информацию из почтового ящика посетителя. Проанализирует её, сделает ещё пачку POST-запросов для отправки писем от имени посетителя. Затем настанет очередь онлайн-банка и так далее.

Спецификация CORS налагает специальные ограничения на запросы, которые призваны не допустить подобного апокалипсиса.

Запросы в ней делятся на два вида.

Простыми считаются запросы, если они удовлетворяют следующим двум условиям:

  1. Простой метод: GET, POST или HEAD
  2. Простые заголовки – только из списка:
  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type со значением application/x-www-form-urlencoded , multipart/form-data или text/plain .

«Непростыми» считаются все остальные, например, запрос с методом PUT или с заголовком Authorization не подходит под ограничения выше.

Принципиальная разница между ними заключается в том, что «простой» запрос можно сформировать и отправить на сервер и без XMLHttpRequest, например при помощи HTML-формы.

То есть, злой хакер на странице http://evilhacker.com и до появления CORS мог отправить произвольный GET-запрос куда угодно. Например, если создать и добавить в документ элемент

Комментарии

  • Если вам кажется, что в статье что-то не так — вместо комментария напишите на GitHub.
  • Для одной строки кода используйте тег , для нескольких строк кода — тег


, если больше 10 строк — ссылку на песочницу (plnkr, JSBin, codepen…)

  • Если что-то непонятно в статье — пишите, что именно и с какого места.
  • Http заголовки в запросах к серверу

    Все статьи из цикла:

    Продолжим изучение http заголовков. В этой статье мы рассмотрим самые распространённые заголовки запросов.

    Заголовок Host

    Браузер посылает HTTP запрос на конкретные IP адреса. Но так как на одном сервере не редко размещается несколько сайтов, сервера должны понимать, какой именно сайт нужен браузеру. Поэтому отправляется заголовок host.

    Илон Маск рекомендует:  Asp компонент доступа к файлам

    В php значение заголовка хранится в переменной $_SERVER[‘HTTP_HOST’], которая часто совпадает с $_SERVER[‘SERVER_NAME’]. Разница в них в том, что в первой информация берётся из самого заголовка, а во второй из настроек сервера. Ну а так как при установке сервера заголовок сравнивается с той настройкой, эти переменные почти не отличаются. Почему «почти»? Потому что в одной, например, может быть указан только домен, а в другой www.домен.

    User-Agent

    [php]User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)[/php]
    Этот заголовок несёт в себе несколько видов информации:

    • Название браузера и его версию.
    • Название операционной системы и её версию.
    • Язык системы по умолчанию.

    С помощью этих заголовков сайты собирают информацию о своих посетителях. Например, они могут определять всех пользователей, пользующихся мобильными браузерами, и перенаправлять их на версию сайта для мобильных телефонов.

    В php значение User-Agent хранится в переменной $_SERVER[‘HTTP_USER_AGENT’].

    Accept-Language

    Этот заголовок показывает, какой язык выбран пользователем языком по умолчанию. Если сайт имеет несколько версий на разных языках, он может перенаправлять пользователей на нужные версии в соответствии со значением заголовка.

    Заголовок может передать информацию о нескольких языках. Как правило, первый из них является самым предпочтительным. Остальные языки из писка должны сопровождаться параметром q, который оценивает важность языка для пользователя. Значение параметра изменяется от 0 до 1.

    В php значение Accept-Language хранится в переменной $_SERVER[‘HTTP_ACCEPT_LANGUAGE’].

    Accept-Encoding

    [php]Accept-Encoding: gzip,deflate[/php]
    Большинство современных браузеров поддерживает метод сжатия Gzip, о чем они и сообщают в заголовке Accept-Encoding. Сервер может отправить страницу в сжатом виде. При этом объём трафика может уменьшиться до 80%, что довольно неплохо разгружает интернет канал сайтов.

    В php значение Accept-Encoding хранится в переменной $_SERVER[«HTTP_ACCEPT_ENCODING»].

    Так же можно использовать функцию ob_gzhandler(), которая проверяет значение Accept-Encoding автоматически.

    Эта страница будет сжата.

    If-Modified-Since

    Браузеры по возможности кешируют страницы, которые вы посещаете. При повторных посещениях тех страниц браузер проверяет, не были ли те страницы изменены с момента последнего кеширования.
    [php]If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT[/php]
    Если страница не менялась с этой даты, то сервер отошлёт вместо html кода статус 304 Not Modified. А браузер, получив такой статус, будет загружать страницу из собственного кеша.


    В php значение If-Modified-Since хранится в переменной $_SERVER[«HTTP_IF_MODIFIED_SINCE»]

    Cookie

    Из названия ясно, что этот заголовок передаёт все куки, хранящиеся в браузере (уж извините, перевод «печенье» как-то не прижился в русском языке, поэтому куки я называю куками).
    [php]Cookie: PHPSESS > Содержимое заголовка представляет из себя группы переменная=значение, разделённые точкой с запятой.

    Часто именно в куках хранится идентификатор текущей сессии у пользователя. Реже он передаётся через url.

    В php значения cookies доступны в массиве $_COOKIE. А доступ к переменным сессии идёт через массив $_SESSION.

    Если требуется определить id сессии, не обязательно проверять cookie, можно воспользоваться функцией php session_id().
    [php]echo $_COOKIE[‘foo’];
    // результат: bar
    echo $_COOKIE[‘PHPSESSID’];
    // результат: r2t5uvjq435r4q7ib3vtdjq120
    session_start();
    echo session_id();
    // результат: r2t5uvjq435r4q7ib3vtdjq120 [/php]

    Referer

    Данный заголовок отправляет url сайта, с которого мы перешли на новую страницу.
    [php]Referer: http://www.borpost.ru/ [/php]
    Если вы с сайта А по ссылке переходите на сайт Б, то сайт Б получит заголовок Referer: А.

    Из этого заголовка всевозможные системы статистики собирают информацию о поисковых запросах (если вы перешли из поисковика), о ссылках на сайт (если вы перешли с другого сайта).

    Ещё этот заголовок часто используют при защите своих файлов от так называемого хот линкинга. Это когда владелец сайта А увидел на сайте Б картинку, захотел вставить её в свой сайт. Но он не скачал её и залил на свой хостинг, а взял и разместил ссылку прямо на сайт Б. получилось так:
    [php] [/php]
    Теперь люди, заходя на сайт А видят картинку с сайта Б. При этом нагрузка основная идёт именно на сайт Б, а всё полезное забирает сайт А. Несправедливо, не так ли?

    Но зато администратор сайта Б может защитить свои файлы от такой схемы. Ведь когда люди заходят на сайт А, их браузер ещё ничего не знает о картинке. Браузер получает только html код. Лишь в следующий момент он находит в коде ссылку на картинку и делает новый запрос:запрос картинки. В этом запросе заголовок referer уже будет содержать в себе имя сайта А.

    Соответственно сервер сайта Б получает запрос с заголовком, содержащим чужой сайт, и для своей же защиты игнорирует этот запрос.

    При этом, если люди заходят на сайт Б, их браузер тоже узнаёт о картинке лишь на следующий момент, создаёт новый запрос, но уже параметр referer содержит имя сайта Б. Сервер видит, что картинку запрашивают после запроса его же страницы, поэтому он выдаёт картинку без всяких вопросов.

    Authorization

    Когда веб-страница запрашивает авторизацию, которая была упомянута в прошлой статье, браузер открывает соответствующее окно для ввода логина и пароля. Вы вводите имя пользователя и пароль в этом окне, и браузер посылает еще один запрос HTTP, но на этот раз он содержит дополнительный заголовок заголовок Authorization.
    [php]Authorization: Basic bXl1c2VyOm15cGFzcw== [/php]
    Данные этого заголовка хранятся в формате base64

    В php значение заголовка хранится как в $ _SERVER[‘PHP_AUTH_USER’], так и в $_SERVER[‘PHP_AUTH_PW’].
    Ну вот и всё, кажется все самые частые заголовки в запросах рассмотрели.

    $ _SERVER и apache_request_headers () сохраняется на протяжении всех запросов?

    Я делаю проверку подлинности для веб-сервиса в PHP. Когда пользователь выполняет аутентификацию сеанса генерируется. В конце концов, эта сессия истекает, и пользователь должен снова проверить подлинность. Информация аутентификации передается в заголовках HTTP.

    Но мне кажется, что иногда переменный $ _SERVER (или apache_request_headers ()) возвращают некоторые заголовки, которые не отправленные клиентом в текущем запросе (они были отправлены в предыдущих запросах). Например, иногда я получаю переменный $ _SERVER [ «»] HTTP_RESPONSE заполненной информации из предыдущих запросов.

    Илон Маск рекомендует:  border-bottom-style в CSS

    Это нормально для $ _SERVER или apache_request_headers () для «сохраняются» по запросам?

    Это зависит от того, или нет, вы используете браузер для доступа сценария.

    Ваши «стойкие» заголовки, вероятно, из-за кэширование браузера, но даже тогда я не совсем уверен, что происходит. Я попытался запустить несколько тестов с помощью Fiddler, но не могу воспроизвести проблему.

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

    Но, я бы определенно избежать отправки Params аутентификации в заголовках. Если вы не используете HTTPS, они подлежат понюхал и украдено. Почему вы используете заголовки?

    $_SERVER содержит информацию о сервере, не обязательно содержит какой-либо информации запроса / ответа, он настойчив через сервер жизненного времени (например, SERVER_NAME будет сохраняться, но не имеет ничего общего с запрос / ответ)

    apache_request_headers() содержит массив заголовков, которые были посланы, те могут или не могут включать в себя любое печенье и сессионную информации — они зависят от клиента, который вы используете для доступа к серверу.

    единственная вещь, которая сохраняется между запросами, это $ _SESSION, потому что каждый раз вы обращаетесь к суперглобальному $ _SESSION, он получает информацию о сессии, которая была сохранена в файловой системе (базовая реализация PHP), некоторые структуры упорствовать сессию в базе данных ( такие, как Yii).


    Я предполагаю , что вы хотите создать проверки подлинности на основе заголовка запроса, так что вам нужно на самом деле сделать, это разобрать request_headers, совпадают с юридическим учетными данными пользователя, и просто open_session() ; и поместить значение в сессии , которая будет отмечать пользователь , как проверку подлинности, любой последующий чек, будет против $ _SESSION суперглобального, или против какой — либо другой-реализации сессий.

    Проверка входящего запроса на основе заголовка запроса в apache http server

    У нас есть веб-приложение (JQuery и Spring), работающее на сервере приложений weblogic. Перед сервером приложений есть HTTP-сервер apache. Все входящие запросы поступают через веб-сервер и доходят до сервера приложений.

    Теперь у нас есть требование, чтобы мы проверяли значение в входящем заголовке HTTP-запроса, и если он присутствует, запрос должен быть отправлен на сервер приложений. Если нет, мы заблокировали запрос и, в свою очередь, отображаем страницу статической ошибки конечному пользователю.

    Я хочу знать, можем ли мы реализовать эту логику на http-сервере apache. Пожалуйста, совет.

    Вы можете сделать это с помощью mod_rewrite. Вы не указали, что такое ваша точная настройка, но если у вас есть конфигурация типа mod_proxy, вы просто хотите убедиться, что перезаписи не мешают прохождению обычного трафика. В общем, в вашей конфигурации Apache вы бы:

    • Включить перезапись
    • Проверьте условие
    • Применить правило перезаписи на основе условий

    Чтобы дать действительно простой пример, если вы искали ключ в строке запроса и запрещали доступ (403), если он его не присутствовал, вы бы сделали что-то вроде этого:

    Это может быть так сложно, как вам хочется, вы можете объединить условия вместе (неявный AND или явный или с его флагом [OR]), и вы можете обслуживать фактическую страницу, а не запрещенное сообщение.

    Как всегда, создайте резервную копию своего конфига, прежде чем возиться, и было бы неплохо проверить это с помощью .htaccess(хотя по соображениям производительности лучше переместить его в фактическую конфигурацию для производственных нагрузок).

    Документация rewrite также является отличным ресурсом:

    Это действительно хорошая документация. Для некоторых указателей — вам нужно искать флаги ([L] = last; [P] = рассматривать как проксированный запрос, [F] = запрещено и т.д.), И вам понадобится кто-то, обычно знакомый с синтаксисом регулярных выражений

    Как прочитать заголовок любого запроса в PHP

    Как читать заголовок в PHP?

    Например, пользовательский заголовок: X-Requested-With .

    ЕСЛИ : вам нужен только один заголовок, а не все заголовки, самый быстрый способ:

    ELSE IF : вы запускаете PHP как модуль Apache или, как и PHP 5.4, используя FastCGI (простой метод):

    ELSE: В любом другом случае вы можете использовать (пользовательскую реализацию):

    См. Также :
    getallheaders () – (PHP> = 5.4) межплатформенная версия Псевдоним apache_request_headers() apache_response_headers () – выборки всех HTTP-заголовков ответов.
    headers_list () – выбор списка заголовков для отправки.

    Мета-переменные с именами, начинающимися с HTTP_ содержат значения, считанные из полей заголовка запроса клиента, если используется протокол HTTP. Имя поля заголовка HTTP преобразуется в верхний регистр, имеет все вхождения — заменено на _ и имеет HTTP_ чтобы присвоить имя мета-переменной.

    Вы должны найти все HTTP-заголовки в глобальной переменной $_SERVER префиксом HTTP_ и дефисами (-) заменяться HTTP_ подчеркивания (_).

    Например, ваш X-Requested-With можно найти в:

    Может быть удобно создать ассоциативный массив из переменной $_SERVER . Это можно сделать в нескольких стилях, но вот функция, которая выводит клавиши с верёвкой:

    Теперь просто используйте $headers[‘XRequestedWith’] чтобы получить желаемый заголовок.

    Начиная с PHP 5.4.0 вы можете использовать функцию getallheaders которая возвращает все запрошенные заголовки как ассоциативный массив:

    Ранее эта функция работала только тогда, когда PHP работал как модуль Apache / NSAPI.


    В некоторых предлагаемых решениях strtolower не хватает, RFC2616 (HTTP / 1.1) определяет поля заголовка как нечувствительные к регистру объекты. Все дело не только в ценности .

    Поэтому предложения, подобные только разбору записей HTTP_ , неверны.

    Лучше будет так:

    Обратите внимание на тонкие отличия от предыдущих предложений. Функция здесь также работает на php-fpm (+ nginx).

    Передайте ключ заголовка, эта функция вернет свое значение, вы можете получить значение заголовка без использования цикла for

    Чтобы все было просто, вот как вы можете получить только тот, который вам нужен:

    или когда вам нужно получить по одному:

    Другие заголовки также находятся в супер-глобальном массиве $ _SERVER, вы можете прочитать о том, как добраться до них здесь: http://php.net/manual/en/reserved.variables.server.php

    Вот как я это делаю. Вам нужно получить все заголовки, если $ header_name не передано:

    Мне это намного проще, чем большинство примеров, приведенных в других ответах. Это также получает метод (GET / POST / etc.) И запрашиваемый URI при получении всех заголовков, которые могут быть полезны, если вы пытаетесь использовать его при регистрации.

    Илон Маск рекомендует:  Руководство по JSON

    Вот простой способ сделать это.

    Я использую эту функцию для получения пользовательских заголовков, если заголовок начинается с «HTTP_X_», мы вставляем массив ��

    Я использовал CodeIgniter и использовал код ниже, чтобы получить его. Может быть полезным для кого-то в будущем.

    Этот небольшой фрагмент PHP может быть вам полезен:

    Apache_request_headers — Осуществить выборку всех заголовков HTTP запросов

    (PHP 4 >= 4.3.0, PHP 5)

    apache_request_headers — Осуществить выборку всех заголовков HTTP запросов

    Описание array apache_request_headers ( void )

    Функция apache_request_headers() возвращает ассоциативный массив, содержащий все заголовки текущего HTTP запроса. Эта функция доступна только в том случае, если PHP работает в качестве модуля Apache .

    Пример 1. Пример использования apache_request_headers()

    foreach ( $headers as $header => $value ) <
    echo «$header: $value
    \n » ;
    >
    ?>

    Замечание: Также вы можете получить значения наиболее широко используемых CGI переменных, читая их из окружения сервера; это работает независимо от того, установлен PHP в качестве модуля Apache или нет. Для того, чтобы получить список всех доступных переменных окружения , используйте функцию phpinfo() .

    Пред. Начало След.
    apache_note Уровень выше apache_reset_timeout

    Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

    Apache_request_headers — Осуществить выборку всех заголовков HTTP запросов

    (PHP 4 >= 4.3.0, PHP 5)

    apache_request_headers — Осуществить выборку всех заголовков HTTP запросов


    Описание array apache_request_headers ( void )

    Функция apache_request_headers() возвращает ассоциативный массив, содержащий все заголовки текущего HTTP запроса. Эта функция доступна только в том случае, если PHP работает в качестве модуля Apache .

    Пример 1. Пример использования apache_request_headers()

    foreach ( $headers as $header => $value ) <
    echo «$header: $value
    \n » ;
    >
    ?>

    Замечание: Также вы можете получить значения наиболее широко используемых CGI переменных, читая их из окружения сервера; это работает независимо от того, установлен PHP в качестве модуля Apache или нет. Для того, чтобы получить список всех доступных переменных окружения , используйте функцию phpinfo() .

    Кроссдоменные запросы (CORS) простая реализация

    Несколько раз у меня уже возникала мысль о реализации кроссдоменных запросов между своими сервисами, однако толково настроить получалось плохо. Давайте уже наконец-то разберемся в этой теме.

    Для начала, рассмотрим пример:

    У вас есть сайт «А», на пример, реализованный на Laravel и vue.js, который реализует определенную логику работы с какими-либо данными. Сейчас вы, в рамках одного сервиса (в данном случае, несколько микро сервисов решающих разные задачи для одного большого проекта), создаете сайт «Б», которому необходимо работать с той же базой данных и использовать часть функционала сайта «А».

    Как решить этот вопрос? Естественно вы можете повторно реализовать необходимый функционал на сайте «Б» и подключиться к базе сайта «А». Но в этом есть свои существенные минусы, как минимум это:

    1. Вы, в рамках одной системы, дублируете код, который вы написали ранее.
    2. Вы используете прямой доступ к БД из двух разных мест, это существенно усложнит поиск ошибок, если такие возникнут и такой подход считается далеко не «лучшей практикой».

    Так же, у вас есть ещё один вариант реализации (да, это первое, что пришло вам в голову) — jsonp. Но особенности этого метода заключаются в некоторой сложности реализации:

    1. Высокие требования к безопасности данного подхода
    2. Требования к изменению кода уже написанного ранее для сайта «А».
    3. Метод позволят только получить данные, если вам, к примеру требуется отправить информацию методом POST, при помощи jsonp вы этого сделать не сможете.
    4. Уязвимость к инъекциям — вы должны полностью доверять серверу, от которого получаете данные, ведь вы будете выполнять весь код, который вам от него приходит.

    Но есть вариант лучше, проще, так как не требует внесения изменений на сайте «А» и является более безопасным подходом, это кроссдоменные запросы или CORS — Cross-origin resource sharing (в переводе: совместное использование ресурсов между разными источниками).

    Суть метода очень проста: для того, чтобы серверу «А» получить или отправить данные на сервер «Б», достаточно на сервере «Б» установить «разрешение» на получение и ответ на запросы с сервера «А». Делается это следующим образом: в заголовках ответа на сервере «Б» вам необходимо установить следующие записи:

    Что такое заголовки в протоколе HTTP.

    Когда мы разбирали общую структуру HTTP запросов и ответов, то одной из частей, из которой эта структура состояла, являлись HTTP заголовки (Message Headers). Давайте сейчас подробнее рассмотрим, что это такое.

    Заголовки – это специальные параметры, которые несут определенную служебную информацию о соединении по HTTP. Некоторые заголовки имеют лишь информационный характер для пользователя или для компьютера, другие передают определенные команды, исходя из которых, сервер или клиент будет выполнять какие-то действия.

    В зависимости от того, где эти заголовки могут находиться, они разделяются на:

    General Headers (Основные заголовки) — должны быть и в запросах и в ответах клиента и сервера.

    Request Headers (Заголовки запроса) — используются только в запросах клиента.

    Response Headers (Заголовки ответа) — используются только в ответах сервера.

    Entity Headers (Заголовки сущности) — сопровождают каждую сущность сообщения.

    Каждый заголовок имеет следующий вид:

    Немного о правилах написания, что нужно иметь в виду:

    1) Регистр (большие или маленькие буквы) здесь не учитываются. Можно писать и так и так.

    2) Пишутся латинскими буквами.

    3) После параметра должен идти символ двоеточия (:)

    4) Окончанием пары «параметр:значение» служит символ переноса строки.

    Вот, примеры некоторых заголовков:

    На самом деле, количество возможных заголовков, которые можно указать, очень большое. Я не вижу смысла приводить их все здесь.

    Если вы знаете английский, то почитать о них можно в оригинале на страницах стандарта HTTP 1.1.

    Кроме того, есть перевод этого стандарта на русский язык здесь:

    Есть еще хорошая табличка, которая опубликована на страницах википедии:

    Кстати, если хотите узнать конверсии и ключевые показатели (KPI) для вашего продающего сайта, могу настроить веб-аналитику.

    Яндекс Метрика и Google Analytics. Цели, события, отчеты.

    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL