Internet
Download
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-сервер помещает информацию о запросе в переменные окружения программы, выполняет программу и пересылает клиенту его вывод.


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


Всё программное обеспечение для работы с протоколом HTTP разделяется на три больших категории:

  • Серверы как основные поставщики услуг хранения и обработки информации (обработка запросов).

  • Клиенты — конечные потребители услуг сервера (отправка запроса).

  • Прокси для выполнения транспортных служб.


Tcp ip
TCP/IP работы с протоколом HTTP разделяется на три больших категории:

  • Стек протоколов 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


Вывод 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>"


основная область применения CGI – для обработки информации из форм.

  • передача параметров в CGI скрипт осуществляется двумя методами:

    • прямой передачей параметров в имени URL в формате “http://адрес_скрипта?имя_параметра1=значение_параметра1&имя_параметра2=значение2...”

    • передача параметров через HTML форму. 


во втором случае необходимо применение модуля cgi:

  • import cgi

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

  • import cgitb; cgitb.enable()

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

  • import cgitb; cgitb.enable(display=0, logdir="/tmp")


Модуль предоставляет средства для ведения log-файла:

  • Logfile - определяет имя log-файла.

  • Logfp - файловый объект, соответствующий log-файлу.

  • log() - записывает строку в log-файл


  • Класс для ведения log-файла: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>"""


Если возможно проверяет, чтобы были заполнены поля ‘name’ и ‘addr’:присутствие нескольких полей с одинаковым именем, используйте встроенную функцию 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.


Fastcgi
FastCGI модуля

  • По сравнению с CGI является более производительным и безопасным.

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

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


urllib — чтение модуля

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

ресурсов по URL


Read readline readlines fileno close
Объекты, реализующие чтение ресурса, помимо read(), readline(), readlines(), fileno() и close() имеют методы:

  • info() - при использовании протокола HTTP этот объект содержит информацию обо всех заголовках.

  • geturl() - возвращает истинный URL ресурса.


  • Функции ресурса, помимо read(), readline(), readlines(), fileno() и close() имеют методы:urlopen() и urlretrieve() создают и используют экземпляр класса FancyURLopener. Созданный объект сохраняется для дальнейшего использования этими функциями. Если нужен более тонкий контроль, используются:

    • URLopener() - базовый класс, реализующий чтение ресурсов.

    • FancyURLopener() - предоставляет обработку HTTP-ответов


  • import ресурса, помимо read(), readline(), readlines(), fileno() и close() имеют методы: 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()


И тот же самый ресурс, используя метод 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()


  • 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 в абсолютные.


  • urlparse() метод - возвращает кортеж из шести строк: идентификатор протокола, положение в сети, путь, параметры, строка запроса и идентификатор фрагмента.

  • То есть применение функции к строке общего вида: ’scheme://netloc/path;parameters?query#fragment’ дает:

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


>>> метод 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='')


  • urlunparse() метод - восстанавливает и возвращает URL из компонент, переданных в кортеже.

  • urljoin() Конструирует и возвращает полный URL, комбинируя базовый URL и относительный URL


import метод urlparse

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

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

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


ad