Оперный пост (GET) с хэш-фрагментом URL - PullRequest
5 голосов
/ 26 апреля 2011

Согласно этой строке из журнала доступа Apache, Opera иногда включает фрагмент хеша в URI, отправляемый на сервер:

[26 / Apr / 2011: 01: 09: 03 +0200] "GET / dagbok / # type = food HTTP / 1.1" 500 - "-" "Opera / 9.80 (Windows NT 6.1; U; nb) Presto / 2.8.131 Версия / 11.10"

Любой опыт или понимание того, почему он это делает?

URI должен быть перехвачен событием изменения хеша jQuery, которое, в свою очередь, вызывает .load () на URI /dagbok/food/.

PS!500 Internal Server происходит, потому что маршрутизация не понимает URI с хэш-фрагментом в нем.И не должен.

Обновление с помощью RewriteRules:

RewriteEngine на
RewriteCond% {REQUEST_FILENAME}! -D
RewriteCond% {REQUEST_FILENAME}! -f
RewriteRule!. (js | ico | txt | gif | jpg | png | css) $ index.php

Index.php затем запускает фронтальный контроллер / маршрутизатор Zends, который не можетнайти любой маршрут для этого URI.Что верно, поскольку этот URI никогда не должен достигать сервера.

1 Ответ

0 голосов
/ 28 апреля 2011

Полагаю, jQuery не удаляет часть #hash из URL перед отправкой XMLHttpRequest и полагается на то, что браузер делает это.Быстрый тест показывает, что Opera этого не делает.(Это, вероятно, следует считать ошибкой в ​​Opera - я не думаю, что есть какой-то стандарт, охватывающий эту точную точку, но он не делает то, что, вероятно, делает большинство других.)

...