Анимация
JavaScript
|
Главная Библионтека 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 |