2010-11-05 2 views
0

Я использую старый метод 404-rewrite на определенном сайте, который является привязан к IIS6 *.Отправляет ли IIS фрагмент URL-адресов на страницы пользовательских ошибок?

Так что, если я вхожу

http://example.com/non-existent/path 

он называет мою страницу ошибки, как так

http://example.com/catch.aspx?404;http://example.com/non-existent/path 

Великого.

Кроме, если я называю страницу с фрагментом, как

http://example.com/non-existent/path#with-fragment 

я получаю тот же результат, что и выше. Я не могу найти фрагмент в любом месте:

  • Request.Url
  • Request.Url.OriginalString
  • Request.UrlReferrer
  • Request.RawUrl
  • заголовки, серверные переменные, и т.д.

Это произошло потому, что я хочу разрешить пути, созданные AJAX, на их серверные версии.

Есть ли способ получить исходный путь от моего обработчика?

Спасибо.

(*) Пожалуйста, не предлагайте менять платформу. Очевидно, если бы я мог.

ответ

2

Нет, не существует. Часть URL-адреса после # никогда не передается серверу по спецификации HTTP. Не имеет никакого отношения к платформе.

Чтобы работать с информацией после # в javascript, вы должны посмотреть плагины/функции Javascript History. jQuery имеет плагин истории, asp.net ajax и mvc ajax (частичные представления и др.) имеют это. Имейте в виду, что это не очень легко реализовать, вам нужно разобраться в отмене/повторном мышлении.

Возможно, это не сработает, если вы пытаетесь обрабатывать 404 на сервере - сервер не знает, что после # было что-то. Не знаете, что вы хотите делать, 404 обработки или «разрешить пути, созданные AJAX»? Какова цель?

+0

Вау ... вы правы. Я никогда не пытался делать это на * любой странице раньше. Цель состоит в том, чтобы обрабатывать URL-адреса, созданные с помощью клиентской навигации, например example.com/somepage#!some-other-page. Facebook делает это, например. Если вы укажете этот URL-адрес, он автоматически перенаправится на другую страницу и избавится от фрагмента. Я не понимал, что обрабатывается на стороне клиента (так что не строго перенаправление). – harpo

+0

Право, это, вероятно, клиентская сторона. – Artemiy

+0

примечание это #! синтаксис специально для google - http://code.google.com/web/ajaxcrawling/docs/getting-started.html. Это говорит Google, что он может поставить #! Что-то в querystring – Artemiy

Смежные вопросы