Тэг ‘HTTP’

HTTP заголовок - как передать?

Вебмастеру частенько нужно передать служебную информацию при помощи HTTP-заголовка. Как это можно сделать?

Передаем Http заголовок средствами HTML

Если быть совсем точным, то формулировка не совсем верна, поскольку мы передаем не заголовок, а служебную информацию, аналогичную информации заголовка, однако содержится она непосредственно в сообщении. Однако, META-теги, например могут влиять на кэширование страниц в браузере по аналогии с HTTP-заголовками.
<meta http-equiv=”Expires” content=”Mon, 19 Jan 2009 20:37:25 GMT”>
<meta http-equiv=”Pragma” content=”no-cache”>

Передаем HTTP-заголовок средствами PHP

В PHP (да и в любом серверном языке программирования) для передачи заголовков существует специальная функция. В PHP она носит название header(). В качестве параметра указывается текст http-заголовка:
header('Content-Language: ru');
header("HTTP/1.0 404 Not Found");
// далее следует вывод страницы
?>

Следует отметить, что  вывод заголовков должен предшествовать выводу содержимого документа. Иначе, php-интерпретатор выдаст предупреждение, а заголовок передан не будет.

Передаем HTTP-заголовок средствами сервера

Часть заголовков формируется без явного указания в скрипте, непосредственно сервером или его модулями (например, php-интерпретатор сообщает заголовок “X-Powered-By”). Мы можем подсказать серверу, какие заголовки выдавать в том или ином случае.

В частности, Apache-сервер позволяет формировать HTTP-заголовки при помощи служебного файла .htaccess
Header set Cache-Control “no-cache, must-revalidate”
Header set Expires “Mon, 19 Jan 2009 20:41:25 GMT”
Header set Pragma “no-cache”

Для этого случая при запросе любого файла с расширением .xml, будет передана служебная информация, запрещающая кэширование файла на стороне клиента.

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

Опубликовано Январь 19, 2009 | автор: levik  |  Комментарий (1) »

HTTP-заголовки ответа сервера

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

3xx: Redirection (Перенаправление)

HTTP-301 Moved Permanently (Перемещено окончательно)
Сообщает браузеру-(Http-клиенту), что запрошенный документ окончательно перенесен и теперь располагается по новому URI, указанному в заголовке Location

HTTP/1.1 301 Moved Permanently
Location: http://www.site.ru/main_page.html

301 редирект в htaccess:
Redirect 301 / http://www.301-redirect.ed/new-page.htm
Redirect 301 /old-page.htm http://www.301-redirect.ed/new-page.htm
или
RedirectPermanent / http://www.301-redirect.ed/

301 редирект с использованием RewriteRule
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite\.com
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=permanent,L]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]

301 редирект на php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newdomain.ru/newdir/newpage.htm");

302 Found (Найдено)
Документ временно доступен по другому URI указанному в заголовке Location. Такое перенаправление используется в PHP по умолчанию (при указании “Header(’Location:URI’);” без дополнительных параметров)

HTTP/1.1 302 Found
Location: http://www.site.ru/temporary_page.html

4xx: Client Error (Ошибка клиента)

400 Bad Request (Плохой запрос)
Синтаксическая ошибка в запросе
401 Unauthorized (Не авторизован)
Для доступа к URI требуется авторизация (заголовок “WWW-Authenticate”)
403 Forbidden (Запрещено)
Ограничения на сервере. Было бы неплохо сообщить, с чем связано.
404 Not Found (Не найдено)
По запрошенному адресу никто не проживает…
410 Gone (Удалён)
Адресат убыл в неизвестном направлении. Используется вместо 404, если документ раньше был.

5xx: Server Error (Ошибка сервера)

Ошибки 500+ возникают из-за неправильных настроек/операций на сервере.
500 Internal Server Error (Внутренняя ошибка сервера)
“Неопознанная” внутренняя ошибка. Если Вы как разработчик увидели 500 ошибку - проверьте .htaccess, разрешения на изменение конфигурационных переменных (время выполнения скрипта и т.д.)

501 Not Implemented (Не реализовано)
Моя твоя не понимает.

502 Bad Gateway (Плохой шлюз)
Ответ выдается, когда сервер выполняет функцию промежуточного звена..

504 Gateway Timeout (Шлюз не отвечает)
Промежуточный сервер не дождался ответа от следующего звена.

Ссылки: Все коды состояния на википедии и Протокол управления кофеваркой

UPD Справедливости ради, следует заметить, что существует кофеварка IMPRESSA F90 с кривым “официальным” подключением к интернет от фирмы Jura ( на сайте производителя - http://www.jura.ru/Service107_65.aspx)

upd2 сервис просмотра http заголовков (подмена UserAgent) http://www.bertal.ru/
http://www.be1.ru/stat/?url=http%3A%2F%2Fwww.searchengines.ru%2F

Опубликовано Июнь 5, 2008 | автор: levik  |  Нет комментариев »