Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [ 99 ] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

print "Запрошенз: ", referer, "<BR>";

print "Вы работаете с броузером: ",

user agent, "<BR>"; print ••Имя компьютер"а: remote host,

"<BR>";

print "Имя данной программы: ",

script name, "<BR>";

print "Программа выполняется на сервере: ",

servername, "<BR>"; print "Имя виртуального сервера: ", virtual host, "<BR>";

При выполнении этой программы на тестовом Web-сервере были получены следующие результаты:

Запрошено из: http: testsys.net/llnks.html Шрогаегесфоузфсм: Mozilla/4.51 [en] (Win95; I) Вня импшю: 1S2.168.1.2 1*<яданЕСЙпраграмуы: /cgi/showstuff.cgi 1{хзграмуан>1ГЖ1няегсяшсзфвфе: testsys УЬяя внртуапьного аэрвара.: perlbook

Перенаправление

Одним из полезных приемов, применяемых ртграммах, является перенаправление, или переадресация HTTP-запроса (redirection). Перенаправление используется в случаях, когда нужно, чтобы загрузила другую страницу на основе некоторого вычисляемого значения.

Предположим, что вы создали набор страниц, предназначенных для просмотра броузером заданного, типа. И хотя такую практику нельзя назвать удачной, тем не менее бывают случаи, когда страницы содержат элементы, обрабатываемые только дополнительными модулями (plug-in) броузера Netscape для Windows. В таком случае

следует создать несколько копий Web-узла, предназначенных для просмотра разными броузерами. Для обработки входящих запросов и перенаправления их по корректному URL придется написать небольшую CGI-программу (рис. 20.4).

Web-броузер

1. Выборка страницы


2. CGI-сцвнарий

переадресации

Рис. 20.4. Схема процесса перенаправления запроса с одного на другой



Для реализации перенаправления необходимо использовать функцию модуля COI redirect, которая управляет рассмотренным выше процессом HTTP-запроса и заставляет броузер загрузить новую страницу.

В листинге 20.3 содержится короткая программа, предназначенная для перенаправления пользователей броузера Netscape под управлением Windows к одной странице, а всех остальных - к другой.

Листун-20.3. Перенаржпен взевлаялоспл оттупа броузера

3: use CGI qw(!all);

4: use strict;

5: my($browser, target);

7; * Офедепение типа хзузфа 8:

9; $browBer=user agent;

10: $target="httpT www.servercom/generic,html 11:

12: * Проверка для WinXX и Netscape

13: if (Sbrowser=-/Hozilla/and Sbrowser=-/Win/) {

14: $target="http: www.server.com/netscape.htnl";

15: }

16: print redirectf -uri => $target );

Проведем анализ программы.

• Строка 9. Переменной $browser присваивается тип броузера.

• Строка 10. Стандартные ШЬ запоминается в переменной $target Все броузеры, отличные от Netscape, будут отосланы по этому адресу.

• Строка 14. Идентификационные данные броузера, сохраненные в переменной Sbrowser, проверяются на наличие в них слов Mozilla и Wto, и при положительном результате назначается новый адрес.

• Строка 16. Броузеру постлается сообщение о перенаправлении.

Перенаправление посредством работает всегда, в то время как при использо-

вании других методов (например, JavaScript- и HTML-расширений) возникают проблемы. JavaScript не поддерживается всеми платформами, а присваивание свойству window.location.href в JavaScript нового URL может не дать желаемых результатов. Использование для перенаправления дескриптора HTML <У1Е1А HTTP-EQUIV=irefresh"> приведет к существенной отсрочке выполнения самого процесса перенаправления, поскольку броузеру перед этим придется полностью загрузить указанную страницу. JavaScript также "грешит" этой проблемой. А перенаправление через протокол HTTP с помощью выполняется до того, как будет передан какой бы то ни

было HTML-код броузеру и притом практически мгновенно.


Броузер Netscape при использовании функции useragent модуля OG адентифицирует себя Mozilla. Это имя происходит от имени оригинального графического Web-броузера Mosaic. Имя, возврашэемое популярным броузером Windows 95 Netscape 4.51 при использовании функции usei agent, выгладит какHozilla/4.51 - (Wn95; I).



Резюме

На этом занятии вы узнали о том, что происходит, когда Web-страница запрашивается с сервера, и получили некоторые сведения о протоколе HTTP. Кроме того, вы научились вызывать из гиперссылки и передавать ей параметры, использовать средства SSI сервера. Вы также узнали, как управлять процессом перенаправления броузера с помощью протокола HTTP и получить информацию о броузере и сервере.

Вопросы и ответы

Создается впечатление, что примеры, в котор1х используются средства SSI, не работают.

Средства SSI могут не работать по нескольким причинам. Во-первых, вам следует

убедиться в том, что ваш Web-сервер поддерживает SSL Во-вторых, удостоверьтесь, что средствам SSI па вашем Web-сервере дап "зеленый свет", т.е. они не запрещены для использования. В-третьих, убедитесь, что ваши HTML-файлы имеют нужные расширения, которые позволят им быть воспринятыми средствами SSI. Возможно, чтобы выяснить эту информацию, вам стоит обратиться к администратору сервера.

Наконец, убедитесь, что вы используете правильный синтаксис для дескрипторов HTML, предназначенных для работы с SSI.

Если вы используете дескриптор <!~#ехес cgi->, убедитесь, что ваша CGI-программа нормально работает и при обычном запуске (без средств SSI).

С помощью режима просмотра исходного кода Web-страницы, который есть практически в любом броузере, после загрузки им какой-нибудь страницы можно легко определить, поддерживаются ли средства SSI на этом сервере. Если в исходном HTML-коде вы увидите дескрипторы SS1, значит, этот сервер их не распознал и не проанализировал.

Что делать, если не работает пример с использованием программы Telnet-онента?

Если программа telnet не выполняет соединение, убедитесь, что вы ввели правильный адрес Web-сервера и указали корректный номер порта, по всей вероятности 80. Чтобы убедиться в правильности номера порта, стоит заглянуть в документацию на программу telnet.

Еще одной распространенной проблемой является невозможность просмотреть результат собственного ввода символов. Некоторые Telnet-клиенты отображают их для вас, а некоторые нет. Не стоит беспокоиться по этому поводу: старайтесь просто аккуратно вводить символы. После ввода строки GET не забудьте дважды нажать клавишу <Enter>.

Семинар

Контрольные вопросы

1. Будет ли следующий URL работать ожидаемым образом? <А flREF=/cgi/foo.pl7naine=Ben FranklinSJob=pri!iter">

а) да;

б) нет, вы не можете так передать два параметра в CGI-программу;

в) нет, пробел в имени Ben Franklin не разрешено использовать в таком виде.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 [ 99 ] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122