Эта тема на forum.dklab.ru


Dmitry Simerzin: IE и header('location: url#anchor') - игнор '#anchor'
Суть проблемы в том, что IE (6-ой и др.) игнорирует переданную ему в линке закладку . Т.е. если мы делаем redirect с помощью
header('location: url#anchor')
на anchor он не переходит и в адресной строке остается только url (без #anchor). В опере и мозиле всё работает нормально, в IE - какая-то фигня. Причем, в определенных случаях работает и в IE.

Заголовок от сервера приходит правильный ('location: url#anchor') но получив его, IE отправляет GET url вместо GET url#anchor

Дмитрий Котеров:
Вы это как решили? Я просто попробовал сделать в phpBB redirect после постинга на viewtopic.php?post_id#post_id, и в IE оно правильно не работает. Т.е. при добалении нового сообщения - работает, при редактировании - нет. Почему - не могу понять. Заголовки сервером в обоих случаях отправляются одинаковые.

PS. Нашел на bugs.php.net описание той же проблемы: http://bugs.php.net/bug.php?id=26748
Dmitry Simerzin:
Вы это как решили?
Ой, извиняюсь, у Вас после редактирования тоже переход через стандартный redirect идет. Я почему-то был уверен, что это иначе.

Всё таки, было бы интересно понять, в чём проблема.
Евгений Галашин:
GET url#anchor
#anchor обрабатывается на стороне клиента. В GET его не нужно пихать.

Кроме того, если бы Вы едосужились просмотреть страницу бага целиком, Вы бы узнали, что:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

1. you need to use a full URI for the Location header and 2. the HTTP
protocol doesn't know about the #... part, that's a browser thing.
Евгений Галашин:
2ДК: А слеши всё плодятся...
Dmitry Simerzin:
если бы Вы едосужились просмотреть страницу бага целиком, Вы бы узнали, что
Вы бы сначала мой вопрос внимательней прочитали. В часности, на счет заголовков.
Дмитрий Котеров:
GET url#anchor
Так и не должно посылаться.

Перевожу: часть #anchor - это не возможность протокола HTTP, она не имеет к нему никакого отношения. Она - чисто браузерное расширение, и реализовывать его или нет, зависит от браузера. Видимо, IE не реализует в полном объеме. Тут ничего не поделать.

Попробуйте, что ли, через тэг <meta> редирект сделать, вдруг там работает...
Дмитрий Котеров:
Вы это как решили? Я просто попробовал сделать в phpBB redirect после постинга на viewtopic.php?post_id#post_id, и в IE оно правильно не работает.
Кстати, интересный вопрос. Вот я пишу это сообщение сейчас, отправляю, и идет редирект на #id_топика. И это срабатывает почему-то.
Дмитрий Котеров:
Вот заголовки, выданные Проксомитроном (почему-то в них даже часть #anchor присутствует... странно...). Может, пригодятся:

+++GET 2924+++
POST /posting.php HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Referer: http://forum.dklab.ru/php/heap/IeAndHeaderLocationUrlAnchor-IgnorAnchor.html?added=yes
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: forum.dklab.ru
Content-Length: 948
Pragma: no-cache
Cookie: ...
Connection: keep-alive
Browser reload detected...
Posting 948 bytes...

+++RESP 2924+++
HTTP/1.0 302 Found
Date: Fri, 26 Nov 2004 16:36:28 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.6 mod_ssl/2.8.16 OpenSSL/0.9.7a rus/PL30.19
X-Powered-By: PHP/4.3.6
Set-Cookie: ...
Set-Cookie: phpbb2mysql_sid=b3ac7152423ec1ba41e148ff27d65b95; path=/
Set-Cookie: ...
Location: http://forum.dklab.ru/viewtopic.php?t=13209&unread=my&added=yes#66315
Connection: close
Content-Type: text/html
+++CLOSE 2924+++

+++GET 2925+++
GET /viewtopic.php?t=13209&unread=my&added=yes#66315 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Referer: http://forum.dklab.ru/php/heap/IeAndHeaderLocationUrlAnchor-IgnorAnchor.html?added=yes
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Host: forum.dklab.ru
Pragma: no-cache
Cookie: ...
Connection: keep-alive
Browser reload detected...

+++RESP 2925+++
HTTP/1.0 200 OK
Date: Fri, 26 Nov 2004 16:36:29 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.6 mod_ssl/2.8.16 OpenSSL/0.9.7a rus/PL30.19
X-Powered-By: PHP/4.3.6
Set-Cookie: PHPSESSID=050dbaab29c4e1f69c82cfe77b4bef48; path=/
Expires: Fri, 26 Nov 2004 16:36:30 GMT
Cache-Control: private, pre-check=0, post-check=0, max-age=0
Pragma: no-cache
Set-Cookie: ...
Last-Modified: Fri, 26 Nov 2004 16:36:30 GMT
Set-Cookie: num_queries=63
Set-Cookie: page_size=48808%2C+0; path=/
Set-Cookie: page_time=0%2C82; path=/
Connection: close
Content-Type: text/html

Евгений Галашин:
*едит* Дмитрий обогнал (-;

Вы бы сначала мой вопрос внимательней прочитали.
Внимательней некуда.
В часности, на счет заголовков.
На счёт заголовков ничего не понял. Насчёт них -- тоже. (-; Интересно, это один я такой? (-;
Заголовок от сервера приходит правильный (\'location: url#anchor\')
Да неверный он! В HTTP чёрным по белому написано, что URL должен быть полным.
но получив его, IE отправляет GET url вместо GET url#anchor
На что Вам отвечено:
2. the HTTP protocol doesn't know about the #... part, that's a browser thing.
Что означает, что так и должно быть. Якорями в документе занимается браузер, сервер о них вообще ничего не знает.

То, что эксплорер неверно на Ваш взгляд обрабатывает редирект -- это к разработчикам Эксплорера. PHP тут вообще ни при чём.

*едит 2* чёртовы слеши! Дмитрий, это будет исправлено? (-;
Дмитрий Котеров:
Евгений Галашин:
Исправил. Плюс - еще исправил глюк со съеданием пустых строк в листингах.
Константин Жинько [tIT]:
А как насчет глюка (извиняюсь за оффтоп), когда пост отправляешь, пост отправляется, а страница не всегда грузится (not found). Проверял вчера на своей машине и сегодня на чужой.
Ant:
Последнее время на форме при создании новой темы, их появляется (тем) несколько (штук 5)...
Dmitry Simerzin:
Якорями в документе занимается браузер, сервер о них вообще ничего не знает.
the HTTP protocol doesn't know about the #... part, that's a browser thing
Да это то всё понятно. Вопрос в том, что:
Вот я пишу это сообщение сейчас, отправляю, и идет редирект на #id_топика. И это срабатывает почему-то.
Почему оно в одном случае срабатывает, а в другом нет?
Дмитрий Котеров:
А как насчет глюка (извиняюсь за оффтоп), когда пост отправляешь, пост отправляется, а страница не всегда грузится (not found). Проверял вчера на своей машине и сегодня на чужой.
Не могу локализовать пока этот глюк.

Эта тема на forum.dklab.ru