проблема перенаправления http - PullRequest
0 голосов
/ 22 июля 2009

Насколько я знаю, мы можем использовать два метода для перенаправления HTTP-ответа.

  1. Использование Java-скрипта window.location;
  2. Использование HttpContext.Current.Response.Redirect в ASP.Net

С точки зрения функции и конечного пользователя, взаимозаменяемы ли эти два метода?

Ответы [ 2 ]

5 голосов
/ 22 июля 2009

window.location требует, чтобы javascript и браузер загружали и отображали исходное содержимое страницы (включая css / scripts) перед изменением страницы.

Response.Redirect, с другой стороны, выдает код состояния 302 с заголовком Location. Это приводит к тому, что браузер мгновенно запрашивает следующую страницу без предварительной загрузки / рендеринга оригинала.

Исходя из вашего другого вопроса , стоит отметить, что window.location имеет преимущество в том, что может выполнять другой javascript до того, как местоположение будет изменено. Например, изменение местоположения другого кадра И текущего кадра одновременно.

4 голосов
/ 22 июля 2009

Я не знаком с HttpContext.Current.Response.Redirect, но, думаю, выдает ответ HTTP 301 или что-то подобное.

Коды ответов HTTP ВСЕГДА предпочтительны, потому что они встроены в, ну, в общем, HTTP. Все понимают их, и они всегда работают. Их уважают поисковые системы и другие автоматизированные приложения.

С другой стороны, метод Javascript не всегда работает и является нестандартным.

Кроме того, с помощью HTTP-кодов передаваемые данные сводятся к минимуму, а метод Javascript всегда должен загружать целую страницу.

РЕДАКТИРОВАТЬ: Для иллюстрации:

Это все, что нужно передать для работы перенаправления HTTP, стандартный заголовок HTTP:

HTTP/1.1 301 Moved Permanently
Location: http://somenewlocation.com/

Для Javascript это больше похоже на:

HTTP/1.1 200 OK
Date: Wed, 22 Jul 2009 07:56:14 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Transfer-Encoding: chunked
Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <script>window.location = "somewhere.com"</script>
</head>
<body>
</body>
</html>

Полный документ HTML должен быть передан и оценен, что займет намного больше времени и не будет понято никем, кроме здравомыслящих браузеров Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...