Referer header что это

Что такое реферер или как использовать HTTP-заголовок referer

Что такое реферер? Заголовок HTTP referer передается с браузера на сервер, чтобы сообщить, на какой странице читатель находился перед тем, как перешел на вашу. Данная информация может быть использована, чтобы предоставить специальные предложения для целевых посетителей, перенаправить клиентов или сгруппировать посетителей сайта по определенным критериям.

Сбор из referer с помощью PHP, JavaScript и ASP

Обратите внимание, что DOM использует альтернативное написание referer :

После того как вы получили referer, что с ним делать?

Общее приветствие

Можно вывести URL-адрес из referer в верхней части страницы в общем приветствии:

Приветствие посетителей из поисковой системы

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

Передача информации в формы

Этот скрипт добавляет referer в скрытое поле формы:

Создание специального предложения для определенных посетителей

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

Направление посетителей на другую страницу

Также можно направить людей с определенным HTTP referer на другую страницу. Будьте осторожны, так как Google и другие поисковые системы могут расценить это, как введение в заблуждение, и наказать ваш сайт:

Измените spammer.com на домен, который нужно заблокировать. Не забудьте добавить перед периодами в домене.

Не полагайтесь на referer

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

Источник

Referer

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

Заголовок Referer может раскрыть информацию пользователя об истории посещённых страниц, что может привести к нарушению приватности.

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

К примеру, по умолчанию URL страницы сброса пароля будет попадать на хосты, размещающие контент на странице, и хосты ссылок, нажатых на этой странице. В обоих случаях сторонний хост получит Referer пользователя.

Существует риск, что содержимое, загруженное на страницу получит доступ к Referer из объекта document.referrer.

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

Некоторые браузеры, такие как Firefox, также отправляют Referer в представлениях, отличных от страниц HTML. К примеру, JsonView отправит Referer хосту, когда в JSON будет переход по URL-адресу, это может раскрыть приватные данные. Иногда передача Referer случается при работе с API, при некорректных параметрах запроса в API ключах.

Источник

Краткая история заголовка referer

Если я нажимаю на ссылку на сайте, заголовок http referer указывает на исходную страницу, с которой я перешла на целевую страницу:

Заголовок широко используется в маркетинге, чтобы проанализировать, откуда пришли посетители сайта. Также он применяется для сбора статистики о поведении посетителей и трафике.

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

Кроме этого, когда трафик проходит между двумя HTTPS сайтами ( SSL становится все более распространенным ) RFC не требует, чтобы заголовок server http referer удалялся.

Метатег referrer

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

Список параметров для поля контента :

Независимо от того, между какими сайтами или протоколами осуществляется переход ( потенциальная угроза утечки данных ).

В качестве практического примера: если бы facebook реализовал этот тег следующим образом:

Когда он нажал на внешнюю ссылку и перешел на другой сайт, заголовок http referer выглядел бы так:

Будьте осторожны

Применяется ли заголовок server http referer с новым мета тегом referrer или нет, в любом случае нужно использовать его с определенной степенью осторожности.

Заголовок отсутствует, если

Для сайтов, которые задействуют заголовок http referer в рекламных кампаниях, его некорректное использование может стать проблемой. Правила прокси-серверов, разрешающие доступ для пользователей, переходящих с конкретных сайтов, формирует высокий риск того, что это не будет работать вообще ( в зависимости от браузера пользователя или локальной настройки ). И возникнут уязвимости для злоупотреблений заголовками.

Подводя итоги

Заголовок referer всегда был довольно неоднозначным, и на данный момент остается неоднозначным, хотя и в меньшей степени. Он может стать очень полезным инструментом для сбора данных о веб-трафике, но лучше не использовать его, если речь идет о конфиденциальных данных.

Пожалуйста, оставляйте ваши мнения по текущей теме статьи. За комментарии, дизлайки, подписки, лайки, отклики огромное вам спасибо!

Источник

Заголовки HTTP

Заголовки HTTP позволяют клиенту и серверу отправлять дополнительную информацию с HTTP запросом или ответом. В HTTP-заголовке содержится не чувствительное к регистру название, а затем после ( : ) непосредственно значение. Пробелы перед значением игнорируются.

Пользовательские собственные заголовки исторически использовались с префиксом X, но это соглашение было объявлено устаревшим в июне 2012 года из-за неудобств, вызванных тем, что нестандартные поля стали стандартом в RFC 6648 ; другие перечислены в реестре IANA, исходное содержимое которого было определено в RFC 4229. IANA также поддерживает реестр предлагаемых новых заголовков HTTP.

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

Заголовки могут быть сгруппированы по следующим контекстам:

Заголовки также могут быть сгруппированы согласно тому, как прокси (proxies) обрабатывают их:

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

Хоп-хоп заголовки (Хоп-хоп заголовки)
Эти заголовки имеют смысл только для одного соединения транспортного уровня и не должны повторно передаваться прокси или кешироваться. Обратите внимание, что с помощью общего заголовка Connection могут быть установлены только заголовки переходов.

Аутентификация

WWW-Authenticate (en-US)
Определяет метод аутентификации, который должен использоваться для доступа к ресурсу.
Authorization
Содержит учётные данные для аутентификации агента пользователя на сервере.
Proxy-Authenticate (en-US)
Определяет метод аутентификации, который должен использоваться для доступа к ресурсам на прокси-сервере.
Proxy-Authorization (en-US)
Содержит учётные данные для аутентификации агента пользователя с прокси-сервером.

Ниже перечислены основные HTTP заголовки с кратким описанием:

Содержит URL-адрес ресурса, из которого был запрошен обрабатываемый запрос. Если запрос поступил из закладки, прямого ввода адреса пользователем или с помощью других методов, при которых исходного ресурса нет, то этот заголовок отсутствует или имеет значение «about:blank».

Это ошибочное имя заголовка (referer, вместо referrer) было введено в спецификацию HTTP/0.9, и ошибка должна была быть сохранена в более поздних версиях протокола для совместимости.

ЗаголовокОписаниеПодробнееСтандарт
AcceptСписок MIME типов, которые ожидает клиент.HTTP Content NegotiationHTTP/1.1
Accept-CH

For the rel=prefetch case, see Link Prefetching FAQ

Introduced in HTTP 1.1’s RFC 2068, section 19.6.2.4, it was removed in the final HTTP 1.1 spec, then reintroduced, with some extensions, in RFC 5988

Location
Max-Forwards
NegotiateHTTP Content NegotiationRFC 2295, §8.4
OriginHTTP Access Control and Server Side Access ControlMore recently defined in the Fetch spec (see Fetch API.) Originally defined in W3C Cross-Origin Resource Sharing
Pragmafor the pragma: nocache value see HTTP Caching FAQ
Proxy-Authenticate
Proxy-Authorization
Range
Referer
Retry-After
Sec-Websocket-ExtensionsWebsockets
Sec-Websocket-KeyWebsockets
Sec-Websocket-OriginWebsockets
Sec-Websocket-ProtocolWebsockets
Sec-Websocket-VersionWebsockets
Server
Set-CookieRFC 2109
Set-Cookie2RFC 2965
Strict-Transport-SecurityHTTP Strict Transport SecurityIETF reference
TCNHTTP Content NegotiationRFC 2295, §8.5
TE
Trailerlists the headers that will be transmitted after the message body, in a trailer block. This allows servers to compute some values, like Content-MD5: while transmitting the data. Note that the Trailer: header must not list the Content-Length:, Trailer: or Transfer-Encoding: headers.RFC 2616, §14.40
Transfer-Encoding
Upgrade
User-Agentfor Gecko’s user agents see the User Agents Reference
Variant-VaryHTTP Content NegotiationRFC 2295, §8.6
Varylists the headers used as criteria for choosing a specific content by the web server. This server is important for efficient and correct caching of the resource sent.HTTP Content Negotiation & HTTP Caching FAQ
Via
Warning
WWW-Authenticate
X-Content-DurationConfiguring servers for Ogg media
X-Content-Security-PolicyUsing Content Security Policy
X-DNSPrefetch-ControlControlling DNS prefetching
X-Frame-OptionsThe XFrame-Option Response Header
X-Requested-WithOften used with the value «XMLHttpRequest» when it is the caseNot standard

Примечание

Note: The Keep-Alive request header is not sent by Gecko 5.0 ; previous versions did send it but it was not formatted correctly, so the decision was made to remove it for the time being. The Connection or Proxy-Connection header is still sent, however, with the value «keep-alive».

Источник

HTTP Headers для «чайников»

Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

Являетесь вы программистом или нет, вы видели его повсюду в Интернете. На данный момент в адресной строке браузера отображается нечто, что начинается с «https: //». Даже ваш первый скрипт Hello World отправил HTTP-header без вашего понимания. В этой статье мы собираемся узнать об основах HTTP-заголовков и о том, как их можно использовать в наших веб-приложениях.

Что такое HTTP Headers?

HTTP значит «Hypertext Transfer Protocol» (Протокол передачи гипертекста). Всемирная паутина использует этот протокол. Он был создан в начале 1990-х годов. Почти всё, что вы видите в вашем браузере, передаётся на ваш компьютер через HTTP. Например, когда вы открыли страницу этой статьи, ваш браузер отправил более 40 HTTP-запросов и получил HTTP-ответы для каждого из них.

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

Referer header что это. http diagram. Referer header что это фото. Referer header что это-http diagram. картинка Referer header что это. картинка http diagramReferer header что это. http diagram. Referer header что это фото. Referer header что это-http diagram. картинка Referer header что это. картинка http diagram Referer header что это. http diagram. Referer header что это фото. Referer header что это-http diagram. картинка Referer header что это. картинка http diagram

Пример

Когда вы вводите URL-адрес в адресной строке, ваш браузер отправляет HTTP-запрос, и он может выглядеть так:

После этого запроса ваш браузер получает ответ HTTP, который может выглядеть так:

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

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

Теперь давайте рассмотрим структуру более подробно.

Как увидеть HTTP Headers

Для анализа HTTP-заголовков я использую следующие расширения Firefox:

Referer header что это. firebug. Referer header что это фото. Referer header что это-firebug. картинка Referer header что это. картинка firebugReferer header что это. firebug. Referer header что это фото. Referer header что это-firebug. картинка Referer header что это. картинка firebug Referer header что это. firebug. Referer header что это фото. Referer header что это-firebug. картинка Referer header что это. картинка firebug

Referer header что это. live http. Referer header что это фото. Referer header что это-live http. картинка Referer header что это. картинка live httpReferer header что это. live http. Referer header что это фото. Referer header что это-live http. картинка Referer header что это. картинка live http Referer header что это. live http. Referer header что это фото. Referer header что это-live http. картинка Referer header что это. картинка live http

Далее в этой статье мы увидим примеры кода в PHP.

Структура запроса HTTP

Referer header что это. request header. Referer header что это фото. Referer header что это-request header. картинка Referer header что это. картинка request headerReferer header что это. request header. Referer header что это фото. Referer header что это-request header. картинка Referer header что это. картинка request header Referer header что это. request header. Referer header что это фото. Referer header что это-request header. картинка Referer header что это. картинка request header

Первая строка HTTP-запроса называется линией запроса и состоит из трёх частей:

Остальная часть запроса содержит HTTP headers как пары «Name: Value» в каждой строке. Они содержат различную информацию о HTTP-запросе и вашем браузере. Например, строка «User-Agent» предоставляет информацию о версии браузера и операционной системе, которую вы используете. «Accept-Encoding» сообщает серверу, может ли ваш браузер принимать сжатый output, например gzip.

Возможно, вы заметили, что данные cookie также передаются внутри HTTP-заголовка. И если бы ссылочный url, это было бы в header тоже.

Большинство этих заголовков являются необязательными. Этот HTTP-запрос мог быть таким же маленьким:

И вы всё равно получите правильный ответ от веб-сервера.

Методы запроса

Три наиболее часто используемых метода запроса: GET, POST и HEAD. Вы, вероятно, уже знакомы с первыми двумя, начиная с написания html-форм.

GET: получение документа

Это основной метод, используемый для извлечения html, изображений, JavaScript, CSS и т. д. С использованием этого метода запрошено большинство данных, загружаемых в ваш браузер.

Например, при загрузке статьи Nettuts +, самая первая строка HTTP-запроса выглядит так:

Как только html загрузится, браузер начнет отправлять GET-запрос изображений, который может выглядеть так:

Веб-формы можно настроить под метод GET. Вот пример.

Когда эта форма отправлена, HTTP-запрос начинается так:

Вы можете видеть, что каждый ввод формы был добавлен в строку запроса.

POST: отправка данных на сервер

Даже если вы можете отправлять данные на сервер с помощью GET и строки запроса, во многих случаях POST будет предпочтительнее. Отправка больших объёмов данных с помощью GET нецелесообразна и имеет ограничения.

Запросы POST чаще всего отправляются веб-формами. Давайте изменим предыдущий пример формы на метод POST.

Отправка этой формы создает HTTP-запрос следующим образом:

Здесь нужно отметить три важных момента:

Запросы POST метода также могут быть сделаны через AJAX, приложения, cURL и т. д. И все формы загрузки файлов необходимы для использования метода POST.

HEAD: получение информации заголовка

HEAD идентичен GET, за исключением того, что сервер не возвращает содержимое HTTP-ответа. Когда вы отправляете запрос HEAD, это означает, что вас интересуют только код ответа и HTTP headers, а не сам документ.

«Когда вы отправляете запрос HEAD, это означает, что вас интересуют только код ответа и HTTP headers, а не сам документ».

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

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

Структура ответа HTTP

После того, как браузер отправляет HTTP-запрос, сервер отвечает HTTP-ответом. Исключая контент, он выглядит так:

Referer header что это. response header. Referer header что это фото. Referer header что это-response header. картинка Referer header что это. картинка response headerReferer header что это. response header. Referer header что это фото. Referer header что это-response header. картинка Referer header что это. картинка response header Referer header что это. response header. Referer header что это фото. Referer header что это-response header. картинка Referer header что это. картинка response header

Первой порцией данных является протокол. Обычно это снова HTTP/1.x или HTTP/1.1 на современных серверах.

Мы все видели «404» pages. Это число фактически приходит из части кода состояния HTTP-ответа. Если запрос GET будет создан для path, который сервер не может найти, он ответил бы 404, а не 200.

Остальная часть ответа содержит headers так же, как HTTP-запрос. Эти значения могут содержать информацию о софте сервера при последнем изменении страницы/файла, типе mime и прочее.

Опять же, большинство этих headers на самом деле являются необязательными.

Коды статуса HTTP

200 OK

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

206 Partial Content

Если приложение запрашивает только диапазон запрошенного файла, возвращается код 206.

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

404 Not Found

Referer header что это. 404. Referer header что это фото. Referer header что это-404. картинка Referer header что это. картинка 404Referer header что это. 404. Referer header что это фото. Referer header что это-404. картинка Referer header что это. картинка 404 Referer header что это. 404. Referer header что это фото. Referer header что это-404. картинка Referer header что это. картинка 404

Когда запрашиваемая страница или файл не найдена, сервер отправляет код ответа 404.

401 Unauthorized

Защищённые паролем веб-страницы отправляют этот код. Если вы не ввели логин правильно, вы можете увидеть следующее в вашем браузере.

Referer header что это. 401. Referer header что это фото. Referer header что это-401. картинка Referer header что это. картинка 401Referer header что это. 401. Referer header что это фото. Referer header что это-401. картинка Referer header что это. картинка 401 Referer header что это. 401. Referer header что это фото. Referer header что это-401. картинка Referer header что это. картинка 401

Обратите внимание, что это относится только к страницам, защищённым паролем HTTP, которые вызывают запросы для входа следующим образом:

Referer header что это. 401 prompt. Referer header что это фото. Referer header что это-401 prompt. картинка Referer header что это. картинка 401 promptReferer header что это. 401 prompt. Referer header что это фото. Referer header что это-401 prompt. картинка Referer header что это. картинка 401 prompt Referer header что это. 401 prompt. Referer header что это фото. Referer header что это-401 prompt. картинка Referer header что это. картинка 401 prompt

403 Forbidden

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

Referer header что это. 403. Referer header что это фото. Referer header что это-403. картинка Referer header что это. картинка 403Referer header что это. 403. Referer header что это фото. Referer header что это-403. картинка Referer header что это. картинка 403 Referer header что это. 403. Referer header что это фото. Referer header что это-403. картинка Referer header что это. картинка 403

Существуют другие способы блокировки доступа и 403 могут быть отправлены. Например, вы можете блокировать по IP-адресу с помощью некоторых директив htaccess.

302 (or 307) Moved Temporarily & 301 Moved Permanently

Эти два кода используются для перенаправления браузера. Например, когда вы используете службу сокращения URL, такую как bit.ly, именно так они перенаправляют людей, которые идут по ссылке.

302 и 301 обрабатываются браузером очень похоже, но они могут иметь различные значения для spiders поисковых систем. Например, если ваш сайт не готов для обслуживания, вы можете перенаправить его в другое место с помощью 302. Поисковая система продолжит проверку вашей страницы в будущем. Но если вы перенаправите с использованием 301, это сообщит spider, что ваш сайт переехал в это место навсегда. За более точной информацией: http://www.nettuts.com перейдите на https://net.tutsplus.com/ используя 301 код вместо 302.

500 Internal Server Error

Referer header что это. 500. Referer header что это фото. Referer header что это-500. картинка Referer header что это. картинка 500Referer header что это. 500. Referer header что это фото. Referer header что это-500. картинка Referer header что это. картинка 500 Referer header что это. 500. Referer header что это фото. Referer header что это-500. картинка Referer header что это. картинка 500

Этот код обычно отображается при сбое веб-скрипта. Большинство скриптов CGI не выводят ошибки непосредственно в браузер, в отличие от PHP. Если есть фатальные ошибки, они просто отправят код статуса 500. И тогда программист должен искать в журналах ошибок сервера, чтобы найти сообщения об ошибках.

Complete List

Вы можете найти полный список кодов состояния HTTP с их пояснениями here.

Заголовки HTTP в запросах HTTP

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

Это в основном имя host, включая домен и поддомен.

User-Agent

Этот заголовок может содержать несколько частей информации, таких как:

Именно так веб-сайты могут собирать определённую общую информацию о своих системах surfers. Например, они могут определить, использует ли surfer мобильный браузер и перенаправляет их на мобильную версию своего веб-сайта, который лучше работает с низким разрешением.

Accept-Language

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

Accept-Encoding

Большинство современных браузеров поддерживают gzip и отправляют это в header. Затем веб-сервер может отправить выходной HTML-код в сжатом формате. Это позволяет уменьшить размер до 80% для экономии пропускной способности и времени.

If-Modified-Since

Если веб-документ уже сохранен в кеше в браузере и вы посещаете его снова, ваш браузер может проверить, был ли документ обновлён, отправив следующее:

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

Cookie

Как следует из названия, это отправляет файлы cookie, хранящиеся в вашем браузере для этого домена.

Это пары name=value, разделённые точками с запятой. Cookies могут также содержать id сеанса.

Referer

Как следует из названия, этот HTTP header содержит ссылочный url.

Например, если я зашел на домашнюю страницу Nettuts + и нажал ссылку на статью, этот header будет отправлен в мой браузер:

Возможно, вы заметили, что слово «referrer» написано с ошибкой, как «referer». К сожалению, он превратился в официальную спецификацию HTTP подобным образом и застрял.

Authorization

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

Данные внутри header имеют кодировку base64. Например, base64_decode (‘bXl1c2VyOm15cGFzcw ==’) возвратит ‘myuser: mypass’

Подробнее об этом будет, когда мы поговорим о заголовке WWW-Authenticate.

Заголовки HTTP в ответах HTTP

Теперь мы рассмотрим некоторые из наиболее распространенных HTTP headers, найденных в HTTP-ответах.

В PHP вы можете установить заголовки ответа, используя функцию header(). PHP уже отправляет определённые заголовки автоматически, для загрузки содержимого и настройки файлов cookie и прочее. Вы можете увидеть headers, которые отправляются или будут отправляться с помощью функции headers_list (). Вы можете проверить, были ли уже отправлены заголовки с помощью функции headers_sent().

Cache-Control

Определение из w3.org: «Поле заголовка Cache-Control используется для указания директив, которые ДОЛЖНЫ выполняться всеми механизмами кэширования по цепочке запросов/ответов». Эти «механизмы кэширования» включают шлюзы и прокси, которые может использовать ваш интернет-провайдер.

«public» означает, что ответ может быть кэширован кем угодно. «max-age» указывает, сколько секунд действителен кеш. Разрешение кэширования вашего сайта может снизить нагрузку на сервер и пропускную способность, а также увеличить время загрузки в браузере.

Кэширование также может быть предотвращено с помощью директивы «no-cache».

Подробности смотрите в w3.org.

Content-Type

Этот header указывает «mime-type» документа. Затем браузер определяет, как интерпретировать содержимое на основании этого. Например, страница html (или PHP-скрипт с выходом html) может возвращать это:

Для gif-изображения это может быть отправлено.

Браузер может использовать внешнее приложение или расширение браузера на основе mime-type. Например, это приведет к загрузке Adobe Reader:

При загрузке напрямую Apache обычно может обнаружить mime-тип документа и отправить соответствующий header. Кроме того, большинство браузеров имеют некоторую степень отказоустойчивости и автоопределение типов mime, если заголовки указаны неверно или отсутствуют.

Вы можете найти список общих типов mime here.

В PHP вы можете использовать функцию finfo_file() для определения mime-типа файла.

Content-Disposition

Этот header указывает браузеру открыть окно загрузки файла, вместо того, чтобы пытаться проанализировать содержимое. Пример:

Это заставит браузер сделать это:

Referer header что это. download. Referer header что это фото. Referer header что это-download. картинка Referer header что это. картинка downloadReferer header что это. download. Referer header что это фото. Referer header что это-download. картинка Referer header что это. картинка download Referer header что это. download. Referer header что это фото. Referer header что это-download. картинка Referer header что это. картинка download

Обратите внимание, что соответствующий заголовок Content-Type также должен быть отправлен вместе с этим:

Content-Length

Когда контент будет передаваться браузеру, сервер может указать его размер (в байтах), используя этот header.

Это особенно полезно при загрузке файлов. Именно так браузер может определить ход загрузки.

Например, вот сценарий-макет, который я написал, имитирует медленную загрузку.

Referer header что это. download with progress. Referer header что это фото. Referer header что это-download with progress. картинка Referer header что это. картинка download with progressReferer header что это. download with progress. Referer header что это фото. Referer header что это-download with progress. картинка Referer header что это. картинка download with progress Referer header что это. download with progress. Referer header что это фото. Referer header что это-download with progress. картинка Referer header что это. картинка download with progress

Теперь я собираюсь закомментировать заголовок Content-Length

Теперь результат такой:

Referer header что это. download without progress. Referer header что это фото. Referer header что это-download without progress. картинка Referer header что это. картинка download without progressReferer header что это. download without progress. Referer header что это фото. Referer header что это-download without progress. картинка Referer header что это. картинка download without progress Referer header что это. download without progress. Referer header что это фото. Referer header что это-download without progress. картинка Referer header что это. картинка download without progress

Браузер может только сказать, сколько байтов было загружено, но он не знает общую сумму. И индикатор выполнения не показывает прогресс.

Это еще один header, который используется для кеширования. Это выглядит так:

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

Если значение Etag документа совпадает с этим, сервер будет отправлять код 304 вместо 200, и никакого содержимого. Браузер будет загружать содержимое из своего кеша.

Last-Modified

Как следует из названия, этот header указывает дату последнего изменения документа в формате GMT:

Это предлагает браузеру другой способ для cache документа. Браузер может отправить это в HTTP-запросе:

Мы уже говорили об этом ранее в разделе «If-Modified-Since».

Location

Этот заголовок используется для перенаправления. Если код ответа 301 или 302, сервер также должен отправить этот header. Например, когда вы перейдете на страницу http://www.nettuts.com, ваш браузер получит следующее:

В PHP вы можете перенаправить surfer так:

По умолчанию, это отправит 302 код ответа. Если вы хотите вместо 301 отправить:

Set-Cookie

Когда веб-сайт хочет установить или обновить файл cookie в вашем браузере, он будет использовать этот header.

Каждый файл cookie отправляется как отдельный header. Обратите внимание, что файлы cookie, установленные с помощью JavaScript, не проходят через HTTP headers.

В PHP вы можете установить cookie-файлы, используя функцию setcookie(), а PHP отправляет соответствующие HTTP headers.

Что приводит к отправке этого заголовка:

Если дата истечения срока действия не указана, cookie удаляется, когда окно браузера закрыто.

WWW-Authenticate

Сайт может отправить этот header для аутентификации пользователя через HTTP. Когда браузер увидит этот header, он откроет диалоговое окно входа в систему.

Что будет выглядеть так:

Referer header что это. 401 prompt. Referer header что это фото. Referer header что это-401 prompt. картинка Referer header что это. картинка 401 promptReferer header что это. 401 prompt. Referer header что это фото. Referer header что это-401 prompt. картинка Referer header что это. картинка 401 prompt Referer header что это. 401 prompt. Referer header что это фото. Referer header что это-401 prompt. картинка Referer header что это. картинка 401 prompt

В руководстве PHP есть section, в котором приведены образцы кода, как это сделать в PHP.

Content-Encoding

Этот header обычно устанавливается, когда возвращаемое содержимое сжимается.

В PHP, если вы используете функцию обратного вызова ob_gzhandler(), она будет автоматически установлена.

Заключение

Спасибо за прочтение. Надеюсь, эта статья послужит хорошей отправной точкой для изучения HTTP Headers. Пожалуйста, оставьте свои комментарии и вопросы ниже, и я постараюсь дать как можно больше ответов.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *