internet
Download
Skip this Video
Download Presentation
Поддержка протоколов Internet

Loading in 2 Seconds...

play fullscreen
1 / 28

Поддержка протоколов Internet - PowerPoint PPT Presentation


  • 102 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Поддержка протоколов Internet' - sydnee-woodward


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
internet

Поддержка протоколов Internet

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

FastCGI - протокол взаимодействия вебсервера и приложения, дальнейшее развитие технологии CGI.

urllib - чтение произвольных ресурсов по URL.

urlparse - операции над URL.

c gi cgi
cgi - протокол CGI
  • CGI-программа вызывается HTTP-сервером, обычно для обработки данных. HTTP-сервер помещает информацию о запросе в переменные окружения программы, выполняет программу и пересылает клиенту его вывод.
slide3
HTTP - протокол передачи гипертекста. Обмен сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP использует глобальные URL.
slide4
Всё программное обеспечение для работы с протоколом HTTP разделяется на три больших категории:
  • Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов).
  • Клиенты — конечные потребители услуг сервера (отправка запроса).
  • Прокси для выполнения транспортных служб.
tcp ip
TCP/IP
  • Стек протоколов TCP/IP  — набор сетевых протоколов разных уровней, используемых в сетях. Протоколы работают друг с другом в стеке.
  • Уровни стека TCP/IP:
    • Прикладной (HTTP)
    • Представительский
    • Сеансовый
    • Транспортный(TCP)
    • Сетевой(IP)
    • Канальный
    • Физический
http get post
Для передачи переменных используется два HTTP метода: GET и POST
  • Метод GET отправляет скрипту всю собранную информацию формы как часть URL:http://www.komtet.ru/script.php?login=admin&name=komtet
  • Метод POST передает данные таким образом, что пользователь сайта уже не видит передаваемые скрипту данные:http://www.komtet.ru/script.php
slide7

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

  • #вначале выводятся заголовки
  • print"Content-Type: text/html"# Определение типа HTML
  • print# Пустая строка: конец заголовков
  • # теперь выводим основной текст в формате HTML
  • print"<html>"
  • print"<title>Вывод CGI-программы</title>"
  • print"<body>"
  • print"<h1>Это моя первая CGI-программа</h1>"
  • print"Привет всему миру!"
  • print"</body>"
  • print"</html>"
slide8
основная область применения CGI – для обработки информации из форм.
  • передача параметров в CGI скрипт осуществляется двумя методами:
    • прямой передачей параметров в имени URL в формате “http://адрес_скрипта?имя_параметра1=значение_параметра1&имя_параметра2=значение2...”
    • передача параметров через HTML форму. 
slide9
во втором случае необходимо применение модуля cgi:
  • import cgi

#чтобы включить обработку ошибок :

  • import cgitb; cgitb.enable()

#чтобы ошибки передавались в log файл:

  • import cgitb; cgitb.enable(display=0, logdir="/tmp")
slide10
Модуль предоставляет средства для ведения log-файла:
  • Logfile - определяет имя log-файла.
  • Logfp - файловый объект, соответствующий log-файлу.
  • log() - записывает строку в log-файл
slide11
Класс FieldStorage - содержит в себе переданную в форме информацию. Этот класс представляет из себя словарь.
  • Чтобы FieldStorage включал все переменные формы:
  • form = cgi.FieldStorage(keep_blank_values=true)
cgi name addr
пример CGI-программы, который проверяет, чтобы были заполнены поля ‘name’ и ‘addr’:
  • import cgi
  • print"""\
  • Content-Type: text/html
  • <html>
  • <body>"""
  • form = cgi.FieldStorage()
  • if form.has_key("name")and form.has_key("addr"):
  • print """\
  • <p>eIN: %s</p>
  • <p>aAOAO: %s</p>"""
  • else:
  • print"""\
  • <h1>Ошибка</h1>
  • <p>Введите, пожалуйста, имя и адрес.</p>"""
  • print"""\
  • </body>
  • </html>"""
slide13
Если возможноприсутствие нескольких полей с одинаковым именем, используйте встроенную функцию type() для определения типа:
  • value = form.getvalue("username", "")
  • if type(value) is type([]):
  • # Заполнено несколько полей с именем пользователя
  • usernames = ",".join(value)
  • else:
  • # Заполнено не более одного поля с именем пользователя
  • usernames = value
slide14

Если объект представляет загружаемый файл, при обращении к атрибуту value весь файл считывается в память в виде строки. Можно определить, представляет ли объект загружаемый файл, по значению атрибута filename или file:

  • fileitem = form["userfile"]
  • if fileitem.file:
  • # Объект fileitem представляет загружаемый файл.
  • # Подсчитываем строки, не сохраняя весь файл в памяти.
  • linecount = 0
  • while 1:
  • if fileitem.file.readline():
  • linecount += 1
  • else:
  • break
slide15
Дополнительные возможности модуляcgi
  • test() - реализует готовую CGI-программу, предназначена для тестирования: выводит минимальный HTTP-заголовок и всю переданную программе информацию в формате HTML.
fastcgi
FastCGI
  • По сравнению с CGI является более производительным и безопасным.
  • FastCGI ликвидирует множество ограничений CGI-программ. Проблема CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности.
  • FastCGI убирает это ограничение, сохраняя процесс запущенным и передавая запросы этому постоянно запущенному процессу. Это позволяет не тратить время на запуск новых процессов.
slide17

urllib — чтение

произвольных

ресурсов по URL

read readline readlines fileno close
Объекты, реализующие чтение ресурса, помимо read(), readline(), readlines(), fileno() и close() имеют методы:
  • info() - при использовании протокола HTTP этот объект содержит информацию обо всех заголовках.
  • geturl() - возвращает истинный URL ресурса.
slide19
Функции urlopen() и urlretrieve() создают и используют экземпляр класса FancyURLopener. Созданный объект сохраняется для дальнейшего использования этими функциями. Если нужен более тонкий контроль, используются:
    • URLopener() - базовый класс, реализующий чтение ресурсов.
    • FancyURLopener() - предоставляет обработку HTTP-ответов
slide20
import urllib
  • class AppURLopener(urllib.FancyURLopener):
  • version = "App/1.7"
  • urllib._urlopener = AppURLopener()
get http
Следующий пример использует метод GET для загрузки ресурса по протоколу HTTP:
  • import urllib
  • params = urllib.urlencode({\'spam\': 1, \ \'eggs\': 2, \

\'bacon\': 0})

  • f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
  • print f.read()
slide22
И тот же самый ресурс, используя метод POST:
  • import urllib
  • params = urllib.urlencode({\'spam\': 1, \
  • \'eggs\': 2, \
  • \'bacon\': 0})
  • f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
  • print f.read()
slide23
import urllib
  • params = urllib.urlencode({\'text\': \'elephant and giraf\'})
  • print params
  • f = urllib.urlopen("http://yandex.ru/yandsearch?" + params)
  • print f.geturl()

#text=elephant+and+giraf

#http://yandex.ru/yandsearch?text=elephant+and+giraf&lr=2

  • print f.read() #выведет код страницы
urlparse url
urlparse — операциинад URL
  • Этот модуль определяет средства для разбиения URL на компоненты, конструирования URL из компонент и преобразования относительных URL в абсолютные.
slide25
urlparse() - возвращает кортеж из шести строк: идентификатор протокола, положение в сети, путь, параметры, строка запроса и идентификатор фрагмента.
  • То есть применение функции к строке общего вида: ’scheme://netloc/path;parameters?query#fragment’ дает:

‘(scheme, netloc, path, parameters, query, fragment)’.

slide26
>>> import urlparse

>>> urlparse.urlparse(

... \'http://www.cwi.nl:80/%7Eguido/Python.html\')

ParseResult(scheme=\'http\', netloc=\'www.cwi.nl:80\', path=\'/%7Eguido/Python.html\', params=\'\', query=\'\', fragment=\'\')

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

urlparse.urljoin(\'http://www.cwi.nl/%7Eguido/

… Python.html\',\'FAQ.html\')

\'http://www.cwi.nl/%7Eguido/FAQ.html\'

ad