Поддержка протоколов Internet cgi - протокол CGI используемый для интерпретации форм HTML на стороне сервера. cgi - протокол CGI используемый для интерпретации.

Презентация:



Advertisements
Похожие презентации
Urllib2 import urllib2. urllib2 Получение текста страницы: t =.join(urllib2.urlopen(url)) Это некрасивый код, но он работает.
Advertisements

Лекция 11 Тема «Формы » Преподаватель: Халелова Е.Н.
Кратко о том, что и как в инете, и причем здесь Питон.
Основы работы на ЭВМ Занятие 3: протоколы передачи данных Фенстер Александр Геннадьевич
Web-узлы. Разработка и администрирование.. Часть 1. Web-технология.
КУРС «WEB-ДИЗАЙН». Что такое Web-страница? То, что мы видим в окне браузера, когда заходим на какой-либо сайт! Мы видим веб-страницу сайта – ее содержимое!
Протокол передачи данных Демонстрационный материал к уроку информатики и ИКТ в 11 классе Епифанова Т.Н. / 2010.
Разработка и использование интерактивных форм Общие положения. Общие положения. Современные браузеры позволяют пользователю, заполнив специальную форму,
Различия и особенности распространенных протоколов. Принципы работы протоколов разных уровней. Предоставление сетевых услуг. Борисов В.А. КАСК – филиал.
Электронная почта Самый старый и самый популярный сервис Интернета. Позволяет осуществлять обмен информацией через почтовые серверы, которые сохраняют.
Компьютерные сети Адресация в Интернете План 1.URL: понятие, типы, структура. 2.Сетевой порт. 3.Практикум.
Система просмотра истории работы в интернете «WebHistory». Инструкция для пользователя.
Протоколы сети Internet TCP/IP, РОР3/SMTP, HTTP, FTP Гр
CGI Common Gateway Interface.
Тестирование безопасности или Security and Access Control Testing.
Основные понятия World Wide Web (W W W). WWW это сеть документов, связанных между собой гиперссылками. Каждый отдельный документ, имеющий собственный.
Web-программирование Кейно Павел Петрович
Текстовые файлы Вербицкая Ольга Владимировна, Заозерная школа 16.
Организация глобальных сетей. История развития глобальных сетей 1964 год США. Создана компьютерная система раннего оповещения о приближении ракет противника.
Java-script – обзор и возможности.. JavaScript объектно-ориентированный скриптовый язык программирования. JavaScript обычно используется как встраиваемый.
Транксрипт:

Поддержка протоколов Internet cgi - протокол CGI используемый для интерпретации форм HTML на стороне сервера. cgi - протокол CGI используемый для интерпретации форм HTML на стороне сервера. FastCGI - протокол взаимодействия вебсервера и приложения, дальнейшее развитие технологии CGI. FastCGI - протокол взаимодействия вебсервера и приложения, дальнейшее развитие технологии CGI.CGI urllib - чтение произвольных ресурсов по URL. urllib - чтение произвольных ресурсов по URL. urlparse - операции над URL. urlparse - операции над URL.

cgi - протокол CGI CGI-программа вызывается HTTP- сервером, обычно для обработки данных. HTTP-сервер помещает информацию о запросе в переменные окружения программы, выполняет программу и пересылает клиенту его вывод. CGI-программа вызывается HTTP- сервером, обычно для обработки данных. HTTP-сервер помещает информацию о запросе в переменные окружения программы, выполняет программу и пересылает клиенту его вывод.

HTTP - протокол передачи гипертекста. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URL. HTTP - протокол передачи гипертекста. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URL.

Всё программное обеспечение для работы с протоколом HTTP разделяется на три больших категории: Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов). Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов). Клиенты конечные потребители услуг сервера (отправка запроса). Клиенты конечные потребители услуг сервера (отправка запроса). Прокси для выполнения транспортных служб. Прокси для выполнения транспортных служб.

TCP/IP Стек протоколов TCP/IP набор сетевых протоколов разных уровней, используемых в сетях. Протоколы работают друг с другом в стеке. Стек протоколов TCP/IP набор сетевых протоколов разных уровней, используемых в сетях. Протоколы работают друг с другом в стеке. сетевых протоколовстекесетевых протоколовстеке Уровни стека TCP/IP: Уровни стека TCP/IP: Прикладной (HTTP) Прикладной (HTTP) Представительский Представительский Сеансовый Сеансовый Транспортный (TCP) Транспортный (TCP) Сетевой (IP) Сетевой (IP) Канальный Канальный Физический Физический

Для передачи переменных используется два HTTP метода: GET и POST Метод GET отправляет скрипту всю собранную информацию формы как часть URL: e=komtet Метод GET отправляет скрипту всю собранную информацию формы как часть URL: e=komtet e=komtet e=komtet Метод POST передает данные таким образом, что пользователь сайта уже не видит передаваемые скрипту данные: Метод POST передает данные таким образом, что пользователь сайта уже не видит передаваемые скрипту данные:

Вывод CGI-программы должен состоять из двух частей, разделенных пустой строкой. Первая часть содержит набор заголовков, которые описывают тип данных, следующих во втором разделе. #вначале выводятся заголовки print "Content-Type: text/html" # Определение типа HTML print # Пустая строка: конец заголовков # теперь выводим основной текст в формате HTML print " " print " Вывод CGI-программы " print " " print " Это моя первая CGI-программа " print "Привет всему миру!" print " "

основная область применения CGI – для обработки информации из форм. передача параметров в CGI скрипт осуществляется двумя методами: передача параметров в CGI скрипт осуществляется двумя методами: прямой передачей параметров в имени URL в формате ние_параметра1&имя_параметра2=значение 2... прямой передачей параметров в имени URL в формате ние_параметра1&имя_параметра2=значение 2... передача параметров через HTML форму. передача параметров через HTML форму.

во втором случае необходимо применение модуля cgi: import cgi import cgi #чтобы включить обработку ошибок : import cgitb; cgitb.enable() import cgitb; cgitb.enable() #чтобы ошибки передавались в log файл: import cgitb; cgitb.enable(display=0, logdir="/tmp") import cgitb; cgitb.enable(display=0, logdir="/tmp")

Модуль предоставляет средства для ведения log-файла: Модуль предоставляет средства для ведения log-файла: Logfile - определяет имя log-файла. Logfile - определяет имя log-файла. Logfp - файловый объект, соответствующий log-файлу. Logfp - файловый объект, соответствующий log-файлу. log() - записывает строку в log-файл log() - записывает строку в log-файл

Класс FieldStorage - содержит в себе переданную в форме информацию. Этот класс представляет из себя словарь. Класс FieldStorage - содержит в себе переданную в форме информацию. Этот класс представляет из себя словарь. Чтобы FieldStorage включал все переменные формы: Чтобы FieldStorage включал все переменные формы: form = cgi.FieldStorage(keep_blank_values=true) form = cgi.FieldStorage(keep_blank_values=true)

пример CGI-программы, который проверяет, чтобы были заполнены поля name и addr: import cgi print """\ Content-Type: text/html """ form = cgi.FieldStorage() if form.has_key("name") and form.has_key("addr"): print """\ eIN: %s aAOAO: %s """ else: print """\ Ошибка Введите, пожалуйста, имя и адрес. """ print """\ """

Если возможно присутствие нескольких полей с одинаковым именем, используйте встроенную функцию type() для определения типа: value = form.getvalue("username", "") if type(value) is type([]): # Заполнено несколько полей с именем пользователя usernames = ",".join(value) else: # Заполнено не более одного поля с именем пользователя usernames = value

Если объект представляет загружаемый файл, при обращении к атрибуту value весь файл считывается в память в виде строки. Можно определить, представляет ли объект загружаемый файл, по значению атрибута filename или file: fileitem = form["userfile"] if fileitem.file: # Объект fileitem представляет загружаемый файл. # Подсчитываем строки, не сохраняя весь файл в памяти. linecount = 0 while 1: if fileitem.file.readline(): linecount += 1 else: break

Дополнительные возможности модуля cgi test() - реализует готовую CGI- программу, предназначена для тестирования: выводит минимальный HTTP-заголовок и всю переданную программе информацию в формате HTML. test() - реализует готовую CGI- программу, предназначена для тестирования: выводит минимальный HTTP-заголовок и всю переданную программе информацию в формате HTML.

FastCGI По сравнению с CGI является более производительным и безопасным. По сравнению с CGI является более производительным и безопасным. FastCGI ликвидирует множество ограничений CGI- программ. Проблема CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности. FastCGI ликвидирует множество ограничений CGI- программ. Проблема CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности.CGIвеб-серверомCGIвеб-сервером FastCGI убирает это ограничение, сохраняя процесс запущенным и передавая запросы этому постоянно запущенному процессу. Это позволяет не тратить время на запуск новых процессов. FastCGI убирает это ограничение, сохраняя процесс запущенным и передавая запросы этому постоянно запущенному процессу. Это позволяет не тратить время на запуск новых процессов.

Объекты, реализующие чтение ресурса, помимо read(), readline(), readlines(), fileno() и close() имеют методы: info() - при использовании протокола HTTP этот объект содержит информацию обо всех заголовках. info() - при использовании протокола HTTP этот объект содержит информацию обо всех заголовках. geturl() - возвращает истинный URL ресурса. geturl() - возвращает истинный URL ресурса.

Функции urlopen() и urlretrieve() создают и используют экземпляр класса FancyURLopener. Созданный объект сохраняется для дальнейшего использования этими функциями. Если нужен более тонкий контроль, используются: Функции urlopen() и urlretrieve() создают и используют экземпляр класса FancyURLopener. Созданный объект сохраняется для дальнейшего использования этими функциями. Если нужен более тонкий контроль, используются: URLopener() - базовый класс, реализующий чтение ресурсов. URLopener() - базовый класс, реализующий чтение ресурсов. FancyURLopener() - предоставляет обработку HTTP-ответов FancyURLopener() - предоставляет обработку HTTP-ответов

import urllib import urllib class AppURLopener(urllib.FancyURLopener): class AppURLopener(urllib.FancyURLopener): version = "App/1.7" version = "App/1.7" urllib._urlopener = AppURLopener() urllib._urlopener = AppURLopener()

Следующий пример использует метод GET для загрузки ресурса по протоколу HTTP: import urllib import urllib params = urllib.urlencode({'spam': 1, \ 'eggs': 2, \ params = urllib.urlencode({'spam': 1, \ 'eggs': 2, \ 'bacon': 0}) 'bacon': 0}) f = urllib.urlopen(" cal.com/cgi-bin/query?%s" % params) f = urllib.urlopen(" cal.com/cgi-bin/query?%s" % params) print f.read() print f.read()

И тот же самый ресурс, используя метод POST: import urllib import urllib params = urllib.urlencode({'spam': 1, \ params = urllib.urlencode({'spam': 1, \ 'eggs': 2, \ 'eggs': 2, \ 'bacon': 0}) 'bacon': 0}) f = urllib.urlopen(" cal.com/cgi-bin/query", params) f = urllib.urlopen(" cal.com/cgi-bin/query", params) print f.read() print f.read()

import urllib import urllib params = urllib.urlencode({'text': 'elephant and giraf'}) params = urllib.urlencode({'text': 'elephant and giraf'}) print params print params f = urllib.urlopen(" + params) f = urllib.urlopen(" + params) print f.geturl() print f.geturl() #text=elephant+and+giraf # print f.read() #выведет код страницы print f.read() #выведет код страницы

urlparse операции над URL Этот модуль определяет средства для разбиения URL на компоненты, конструирования URL из компонент и преобразования относительных URL в абсолютные. Этот модуль определяет средства для разбиения URL на компоненты, конструирования URL из компонент и преобразования относительных URL в абсолютные.

urlparse() - возвращает кортеж из шести строк: идентификатор протокола, положение в сети, путь, параметры, строка запроса и идентификатор фрагмента. urlparse() - возвращает кортеж из шести строк: идентификатор протокола, положение в сети, путь, параметры, строка запроса и идентификатор фрагмента. То есть применение функции к строке общего вида: scheme://netloc/path;parameters?query#fr agment дает: То есть применение функции к строке общего вида: scheme://netloc/path;parameters?query#fr agment дает: (scheme, netloc, path, parameters, query, fragment).

>>> import urlparse >>> urlparse.urlparse(... ' ml') ParseResult(scheme='http', netloc=' path='/%7Eguido/Python.html', params='', query='', fragment='')

urlunparse() - восстанавливает и возвращает URL из компонент, переданных в кортеже. urlunparse() - восстанавливает и возвращает URL из компонент, переданных в кортеже. urljoin() Конструирует и возвращает полный URL, комбинируя базовый URL и относительный URL urljoin() Конструирует и возвращает полный URL, комбинируя базовый URL и относительный URL

import urlparse urlparse.urljoin(' … Python.html','FAQ.html') '