|
|
|
| Робот Яндекса получает от сервера такую информацию:
Код статуса 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 передавать поисковику (браузеру), как они её могут использовать? | |
|
|
|
|
|
|
|
для: Владимир55
(30.01.2012 в 12:20)
| | >И здесь присутствует код статуса HTTP: "200 OK"
>Я так понимаю, что это означает, что номенклатура заголовков соответствует протоколу обмена,
>и каждый из них распознан роботом и принят к сведению.
Ну нет... Сервер сообщает, что он понял запрос робота, что у него нет ошибок, что такая страница существует, успешно сформирована и идет далее в ответе. Т.е. никаких проблем с вашим запросом - берите и используйте, если что-то не понятно/недополучено, можно присылать новые запросы. Это вовсе не означает, что робот все поймет или примет к сведению. Сервер вообще не интересует робот это или браузер, к нему поступают запросы - он дает ответы. Робот посылает свои HTTP-запросы и в них нет кодов состояния. | |
|
|
|
|
|
|
|
для: cheops
(30.01.2012 в 12:38)
| | С этим ясно. Спасибо!
А относительно вопросов по строке Set-Cookie ? В Яндекс писать? | |
|
|
|
|
|
|
|
для: Владимир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-данные. | |
|
|
|
|
|
|
|
для: cheops
(30.01.2012 в 13:16)
| | Главный интерес тут вот в чем.
Если Яндекс принимает cookie, то это сессионный клиент. И тогда я бы в алгоритме скрипта использовал сессии, которые по логике работы тут очень нужны.
А если cookie не принимает, то РНР подставит в адресную строку идентфикатор сессии, и получатся дубли страниц, что очень даже нехорошо.
Но, как я понимаю, ответа на этот вопрос нет - сервер ппытается установить cookie, однако неизвестно, удается ли ему это! | |
|
|
|
|
|
|
|
для: Владимир55
(30.01.2012 в 17:28)
| | >сервер ппытается установить cookie, однако неизвестно, удается ли ему это!
Совершенно верно. Вернее он будет знать, что ему это удалось, если клиент ему пришлет со следующим запросом HTTP-заголовок Cookie. Если такого заголовка не будет, сервер даже не будет знать, новый это клиент или старый за новой порцией информации, он так и будет каждому клиенту без Cookie отправлять запросы Set-Cookie. В этом ничего страшного или необычного нет, сервера так делают 20 лет, а лишняя строчка много места не потребляет и работы не добавляет. Такова особенность протокола HTTP, он такой и таким и останется, пока не появится новой версии или не будет использоваться другой протокол, об чем никто даже не заикается. | |
|
|
|
|
|
|
|
для: cheops
(30.01.2012 в 13:16)
| | А относительно вопросов по строке Set-Cookie ? В Яндекс писать?
Они конечно, знают протокол HTTP, возможно даже от неожиданности ответят :))),
Похоже, что для техотдела Яндекса это тоже загадка - со своего IP они это не видят, попросили логи сайта, где я это отыскал, и некоторую другую информацию.
Заодно попробую у них узнать, является ли Яндекс сессионным. | |
|
|
|
|
|
|
|
для: Владимир55
(31.01.2012 в 10:48)
| | Техотдел ответил однозначно: "робот не обращает внимание на cookie, которые отдает сервер, содержимое заголовка Set-Cookie игнорируется".
Так что поисковик, по-прежнему, несессионный. Теперь понятно, почему они так настойчиво требуют Sitemap. | |
|
|
|