Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В чем сущность статуса "200 OK"
 
 автор: Владимир55   (30.01.2012 в 12:20)   письмо автору
 
 

Робот Яндекса получает от сервера такую информацию:
Код статуса HTTP: "200 OK"  
Время ответа сервера: 256мс  
Заголовки: 
Vary: Accept-Encoding 
Transfer-Encoding: chunked 
Date: Sun, 29 Jan 2012 11:39:41 GMT 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Keep-Alive: timeout=30 
Set-Cookie: PHPSESSID=5704bb6e1e1e8599dd07e28560af1763; path=/ 
Connection: keep-alive 
Content-Type: text/html; charset=windows-1251 
X-Powered-By: PHP/5.2.10-2ubuntu6.7 
Server: nginx/1.1.0 
Pragma: no-cache 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Кодировка: windows-1251


И здесь присутствует код статуса HTTP: "200 OK"

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

То есть, это диагностическое сообщение можно интерпретировать так:
Vary: Accept-Encoding – «ОК»
Transfer-Encoding: chunked  – «ОК» 
Date: Sun, 29 Jan 2012 11:39:41 GMT  – «ОК»
Expires: Thu, 19 Nov 1981 08:52:00 GMT – «ОК»
Keep-Alive: timeout=30 – «ОК»
Set-Cookie: PHPSESSID=5704bb6e1e1e8599dd07e28560af1763; path=/  – «ОК»
Connection: keep-alive – «ОК» 

А если так,  то что означает строка 
Set-Cookie: PHPSESSID=5704bb6e1e1e8599dd07e28560af1763; path=/  


В чем сущность этой строки? Создан файл для хранения Cookie с именем 5704bb6e1e1e8599dd07e28560af1763?

А где создан? В корне сервера, где расположен сайт (path=/ )? Или в корне сервера, принадлежащего Яндексу?

И зачем эту информацию о Cookie передавать поисковику (браузеру), как они её могут использовать?

  Ответить  
 
 автор: cheops   (30.01.2012 в 12:38)   письмо автору
 
   для: Владимир55   (30.01.2012 в 12:20)
 

>И здесь присутствует код статуса HTTP: "200 OK"
>Я так понимаю, что это означает, что номенклатура заголовков соответствует протоколу обмена,
>и каждый из них распознан роботом и принят к сведению.
Ну нет... Сервер сообщает, что он понял запрос робота, что у него нет ошибок, что такая страница существует, успешно сформирована и идет далее в ответе. Т.е. никаких проблем с вашим запросом - берите и используйте, если что-то не понятно/недополучено, можно присылать новые запросы. Это вовсе не означает, что робот все поймет или примет к сведению. Сервер вообще не интересует робот это или браузер, к нему поступают запросы - он дает ответы. Робот посылает свои HTTP-запросы и в них нет кодов состояния.

  Ответить  
 
 автор: Владимир55   (30.01.2012 в 13:00)   письмо автору
 
   для: cheops   (30.01.2012 в 12:38)
 

С этим ясно. Спасибо!

А относительно вопросов по строке Set-Cookie ? В Яндекс писать?

  Ответить  
 
 автор: cheops   (30.01.2012 в 13:16)   письмо автору
 
   для: Владимир55   (30.01.2012 в 13:00)
 

>А относительно вопросов по строке Set-Cookie ? В Яндекс писать?
Они конечно, знают протокол HTTP, возможно даже от неожиданности ответят :))), но на самом деле в этом нет необходимости - это не сложно и от Яндекса не зависит
>Set-Cookie: PHPSESSID=5704bb6e1e1e8599dd07e28560af1763; path=/
Так сервер просит клиента установить сессионную cookie с именем "PHPSESSID" и значением "5704bb6e1e1e8599dd07e28560af1763" и путем /. Фактически это эквивалентно
<?php
  setcookie
("PHPSESSID""5704bb6e1e1e8599dd07e28560af1763");
?>
При этом клиент может ставить её или не ставить. Робот скорее всего на этот HTTP-заголовок внимания не обращает, зачем ему cookie, когда у него и так дел по горло? Если же cookie установлена, то со следующим запросом клиент отправит серверу HTTP-заголовок Cookie с этими данными, сервер передаст их в PHP, а PHP положит их в массив $_COOKIE. Если вы задавались вопросом почему популярен PHP: именно благодаря вот таким механизмам и глобальным массивам, в других языках нужно разбираться HTTP-заголовки самостоятельно. Именно поэтому в качестве языка Web-программирования долгое время был популярен Perl - без регулярных выражений просто рехнешься разбирать HTTP-заголовки, строки запроса, POST-данные.

  Ответить  
 
 автор: Владимир55   (30.01.2012 в 17:28)   письмо автору
 
   для: cheops   (30.01.2012 в 13:16)
 

Главный интерес тут вот в чем.

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

А если cookie не принимает, то РНР подставит в адресную строку идентфикатор сессии, и получатся дубли страниц, что очень даже нехорошо.

Но, как я понимаю, ответа на этот вопрос нет - сервер ппытается установить cookie, однако неизвестно, удается ли ему это!

  Ответить  
 
 автор: cheops   (30.01.2012 в 18:02)   письмо автору
 
   для: Владимир55   (30.01.2012 в 17:28)
 

>сервер ппытается установить cookie, однако неизвестно, удается ли ему это!
Совершенно верно. Вернее он будет знать, что ему это удалось, если клиент ему пришлет со следующим запросом HTTP-заголовок Cookie. Если такого заголовка не будет, сервер даже не будет знать, новый это клиент или старый за новой порцией информации, он так и будет каждому клиенту без Cookie отправлять запросы Set-Cookie. В этом ничего страшного или необычного нет, сервера так делают 20 лет, а лишняя строчка много места не потребляет и работы не добавляет. Такова особенность протокола HTTP, он такой и таким и останется, пока не появится новой версии или не будет использоваться другой протокол, об чем никто даже не заикается.

  Ответить  
 
 автор: Владимир55   (31.01.2012 в 10:48)   письмо автору
 
   для: cheops   (30.01.2012 в 13:16)
 

А относительно вопросов по строке Set-Cookie ? В Яндекс писать?
Они конечно, знают протокол HTTP, возможно даже от неожиданности ответят :))),


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

Заодно попробую у них узнать, является ли Яндекс сессионным.

  Ответить  
 
 автор: Владимир55   (31.01.2012 в 19:58)   письмо автору
 
   для: Владимир55   (31.01.2012 в 10:48)
 

Техотдел ответил однозначно: "робот не обращает внимание на cookie, которые отдает сервер, содержимое заголовка Set-Cookie игнорируется".

Так что поисковик, по-прежнему, несессионный. Теперь понятно, почему они так настойчиво требуют Sitemap.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования