Авторитетный post asp. Использование методов GET и POST. Указание стандартных значений для параметров

Авторитетный post asp. Использование методов GET и POST. Указание стандартных значений для параметров

05.04.2019

Методы GET и POST в HTTP и HTTPS — два самых популярных метода, используемых для передачи данных с клиента на сервер с использованием протокола HTTP (протокол передачи гипертекста). И GET, и POST могут использоваться для отправки запроса и получения ответа, но между ними существует значительная разница.

Разница между запросами GET и POST в HTTP или HTTPS - популярный вопрос на каждом интервью по веб-программированию. Поскольку HTML не зависит от технологии веб-сервера, такой как Java, ASP или PHP и HTTP — это основной протокол в пространстве Интернета, нельзя четко игнорировать важность понимания методов GET и POST. В этой статье мы рассмотрим, что такое HTTP-метод GET, что такое HTTP-метод POST, когда использовать тот или иной запрос и какова разница между ними. Разберем каждое понятие отдельно.

Что такое HTML?

HTML — это язык, используемый для создания веб-страниц. Гипертекст относится к гиперссылкам, которые может содержать HTML-страница. Язык разметки означает способ использования тегов для определения макета страницы и элементов на странице.
Ниже приведен пример HTML, который используется для определения базовой веб-страницы с заголовком и одним абзацем текста:



<Голова>
<Название> TechTerms.com

<Тело>

Это пример абзаца в HTML.

Первая строка определяет тип содержимого, содержащегося в документе. , и , которые все включены в пример выше. Заголовок страницы, метаданные и ссылки на файлы с привязкой помещаются между Фактическое содержимое страницы находится между тегами .

За последние несколько десятилетий сеть пережила множество изменений, но HTML всегда был основным языком, используемым для разработки веб-страниц. Интересно, что хотя веб-сайты стали более продвинутыми и интерактивными, HTML стал проще. Если вы сравниваете источник страницы HTML5 с аналогичной страницей, написанной в HTML 4.01 или XHTML 1.0, на странице HTML5 будет меньше кода. Это связано с тем, что современный HTML опирается на каскадные таблицы стилей или JavaScript для форматирования почти всех элементов внутри страницы.

Многие динамические веб-сайты генерируют веб-страницы «на лету», используя серверный язык сценариев, такой как PHP или ASP. Однако даже динамические страницы должны быть отформатированы с использованием HTML. Поэтому языки сценариев часто генерируют HTML-код, который отправляется в веб-браузер.

Протокол передачи гипертекста HTTP предназначен для взаимодействия между клиентами и серверами и работает как протокол запроса-ответа.

Веб-браузер может быть клиентом, а приложение на компьютере, на котором размещен веб-сайт, — сервером.

Клиент (браузер) отправляет HTTP-запрос серверу, сервер возвращает ответ, который содержит информацию о состоянии запроса и может также содержать запрошенный контент.

Два метода запросов GET и POST

Два часто используемых метода для запроса-ответа между клиентом и сервером:

    GET - запрашивает данные из указанного ресурса;

    POST - отправляет данных, подлежащие обработке, на указанный ресурс.

Перевод GET и POST в буквальном смысле означает получение и постобработку.

Подробнее об HTTP

HTTP — это протокол, используемый для передачи данных через Интернет. Является частью пакета интернет-протокола и определяет команды и службы, используемые для передачи данных веб-страницы.

HTTP использует модель server-client. Клиент может быть домашним компьютером, ноутбуком или мобильным устройством. HTTP-сервер, как правило, является веб-хостом с программным обеспечением веб-сервера, таким как Apache или IIS. Когда пользователь получает доступ к веб-сайту, браузер отправляет запрос на соответствующий веб-сервер и отвечает кодом состояния HTTP. Если URL-адрес действителен и соединение предоставлено, сервер отправит браузеру веб-страницу и связанные файлы.

Общие коды состояния HTTP включают:

    200 — успешный запрос (существует веб-страница);

    301 — перемещается постоянно (часто перенаправляется на новый URL-адрес);

    401 — несанкционированный запрос (требуется авторизация);

    500 — внутренняя ошибка сервера (часто вызванная неправильной конфигурацией сервера).

POST и GET в HTTP

HTTP определяет команды GET и POST, которые используются для обработки представлений форм на веб-сайтах. Команда CONNECT используется для облегчения безопасного соединения, которое шифруется с использованием SSL. Зашифрованные HTTP-соединения происходят через HTTPS — расширение HTTP, предназначенное для защищенных передач данных.

URL-адреса, начинающиеся с «http://», доступны по стандартным протоколам передачи гипертекста и по умолчанию используют порт 80. URL-адреса, начинающиеся с «https://», доступны через безопасное соединение HTTPS и часто используют порт 443.

POST

POST — это серия системных проверок, выполняемых компьютерами и другими электронными устройствами при их включении. Результаты теста могут отображаться на экране, выводиться через мигающие светодиоды или просто записываться внутри. В компьютерных системах операция POST выполняется в начале последовательности загрузки. Если все тесты пройдены, остальная часть процесса запуска будет продолжена автоматически.

Операционные системы устройств Mac и Windows запускают POST каждый раз, когда компьютер загружается или перезапускается. Сканирование проверяет аппаратное обеспечение и гарантирует, что процессор, ОЗУ и устройства хранения данных будут работать правильно. Если во время выполнения POST возникла ошибка, процесс запуска может приостановиться или полностью прекратиться, а на мониторе может появиться сообщение о На ПК ошибки POST часто отображаются на экране информации о BIOS. Они могут выводиться как криптовые коды, такие как «08», или как системное сообщение, например, «Ошибка системной памяти при смещении». На Mac ошибки POST часто обозначаются простой графикой, например, сломанной иконкой папки, которая указывает, что загрузочное устройство не найдено.

Физические проявления

В некоторых случаях экран компьютера может даже не включаться перед ошибками POST. Если это произойдет, коды ошибок могут выводиться через мигающие светодиодные индикаторы или звуковые сигналы. Например, Apple iMac будет воспроизводить три последовательных тона, выдерживать паузу в пять секунд, а затем повторять тоны, когда во время запуска обнаруживается плохая ОЗУ. Большинство ПК также издают звуковые сигналы при обнаружении ошибок POST, хотя каждый производитель использует свои собственные коды.

POST — довольно технический термин, который используют только компьютерные техники на регулярной основе. Однако это хорошая аббревиатура, поскольку помогает лучше понять сообщения об ошибках, которые могут появиться на компьютерах или других электронных устройствах. Если компьютер не запускается из-за ошибки POST, можно использовать другое устройство для поиска значения и причины ошибки с веб-сайта производителя. Затем можно предпринять соответствующие действия — удаление модуля памяти или повторную установку видеокарты с последующим перезапуском оборудования.

GET

POST также является методом передачи переменных формы HTML с одной веб-страницы на другую, не отображая их в адресной строке. Альтернативный метод — GET, который добавляет значения в URL. Запросы HTTP POST предоставляют дополнительные данные от клиента (браузера) на сервер в теле сообщения. Напротив, запросы GET включают все необходимые данные в URL. Формы в HTML могут использовать любой метод, указав метод = POST или method = GET (по умолчанию) в элементе

. Указанный метод определяет, как данные формы передаются на сервер. Когда используется метод GET, все данные формы кодируются в URL-адрес в качестве параметров строки запроса. С POST данные формы появляются в теле сообщения HTTP-запроса.

Различия в представлении формы

Метод запроса POST запрашивает веб-сервер на прием и хранение данных, заключенные в тело сообщения запроса. Часто используется при загрузке файла или при отправке заполненной веб-формы.

Метод запроса HTTP GET извлекает информацию с сервера. В рамках запроса GET некоторые данные могут передаваться в строке запроса URL-адреса, указывая условия поиска, диапазоны дат или другую информацию, которая определяет запрос.

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

Основное различие между запросами GET и POST заключается в том, что они соответствуют различным HTTP-запросам, как определено в спецификациях HTTP. Процесс подачи обоих методов начинается таким же образом: набор данных формы создается браузером и затем кодируется способом, указанным атрибутом enctype. Для METHOD = "POST атрибут enctype может быть multipart/form-data или application/x-www-form-urlencoded, тогда как для METHOD =" GET " запускается только через application/x-www-form-urlencoded. Эти данные формы set затем передается на сервер.

Для отправки формы с помощью METHOD = "GET" браузер создает URL-адрес, принимая значение атрибута действия и добавляя к нему набор данных формы, закодированного с использованием типа контента application/x-www-form-urlencoded). Затем браузер обрабатывает этот URL-адрес, как если бы он ссылался на ссылку (или, как если бы пользователь набрал URL-адрес вручную). Браузер делит URL на части и распознает хост, затем отправляет на этот хост запрос GET с остальной частью URL в качестве аргумента. Важно отметить, что этот процесс означает, что данные формы ограничены кодами ASCII. Особое внимание следует уделять кодированию и декодированию других типов символов при передаче их по URL-адресу в формате ASCII.

Представление формы с METHOD = «POST» вызывает отправку запроса POST с использованием значения атрибута действия и сообщения, созданного в соответствии с типом контента, указанным атрибутом enctype.

PHP

PHP — это встроенный в HTML. Это означает, что PHP-код можно вставить в HTML-страницу. Код PHP читается или анализируется сервером, на котором находится страница. Вывод функций GET и POST в PHP на странице обычно возвращается как HTML-код, который может быть прочитан браузером. Поскольку PHP-код преобразуется в HTML до загрузки страницы, пользователи не могут просматривать PHP-код на странице. Это делает страницы PHP достаточными для доступа к базам данных и другой защищенной информации.

Большая часть синтаксиса PHP заимствована из других языков, таких как C, Java и Perl. Однако PHP имеет ряд уникальных функций и специальных функций. Цель этого языка — дать возможность веб-разработчикам быстро и легко писать динамически сгенерированные страницы.

Wordpress

WordPress — это бесплатная система управления контентом, используемая для создания и обслуживания веб-сайтов. Его простота использования и уникальные функции ведения блога помогли ему стать самым популярным инструментом ведения блогов в Интернете.

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

Несмотря на то что доступны тысячи шаблонов WordPress и плагинов, система POST GET в WordPress все еще имеет свои ограничения. Поскольку это служба на основе шаблонов, пользователь должен начать с заранее созданного веб-сайта, а не создавать страницы с нуля. Кроме того, нет возможности вставлять скрипты или поддерживать базу данных с тем же уровнем контроля, который предлагает пользовательский веб-сайт.

Инструмент POST_GET_ID () позволяет использовать скрипты для управления элементом, так как он имеет уникальный идентификатор, и при отправке его в виде формы через данные методы раскрывающийся список будет отправлен с уникальным идентификатором, который позволяет сценарию замечать, какая публикация работает. В качестве альтернативы может быть отправлена скрытая переменная, которая позволит сценарию увидеть, какая публикация относится к представлению.

Этот пост - ответ на вопрос, заданный в комментарии к одной из моих статей.

В статье я хочу рассказать, что же из себя представляют HTTP-методы GET/POST/PUT/DELETE и другие, для чего они были придуманы и как их использовать в соответствии с REST.

HTTP

Итак, что же представляет из себя один из основных протоколов интернета? Педантов отправлю к RFC2616 , а остальным расскажу по-человечески:)

Этот протокол описывает взаимодействие между двумя компьютерами (клиентом и сервером), построенное на базе сообщений, называемых запрос (Request) и ответ (Response). Каждое сообщение состоит из трех частей: стартовая строка, заголовки и тело. При этом обязательной является только стартовая строка.

Стартовые строки для запроса и ответа имеют различный формат - нам интересна только стартовая строка запроса, которая выглядит так:

METHOD URI HTTP/VERSION ,

Где METHOD - это как раз метод HTTP-запроса, URI - идентификатор ресурса, VERSION - версия протокола (на данный момент актуальна версия 1.1).

Заголовки - это набор пар имя-значение, разделенных двоеточием. В заголовках передается различная служебная информация: кодировка сообщения, название и версия браузера, адрес, с которого пришел клиент (Referrer) и так далее.

Тело сообщения - это, собственно, передаваемые данные. В ответе передаваемыми данными, как правило, является html-страница, которую запросил браузер, а в запросе, например, в теле сообщения передается содержимое файлов, загружаемых на сервер. Но как правило, тело сообщения в запросе вообще отсутствует.

Пример HTTP-взаимодействия

Рассмотрим пример.

Запрос:
GET /index.php HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Accept: text/html Connection: close
Первая строка - это строка запроса, остальные - заголовки; тело сообщения отсутствует

Ответ:
HTTP/1.0 200 OK Server: nginx/0.6.31 Content-Language: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: close ... САМА HTML-СТРАНИЦА...

Ресурсы и методы

Вернемся к стартовой строке запроса и вспомним, что в ней присутствует такой параметр, как URI. Это расшифровывается, как Uniform Resource Identifier - единообразный идентификатор ресурса. Ресурс - это, как правило, файл на сервере (пример URI в данном случае "/styles.css"), но вообще ресурсом может являться и какой-либо абстрактный объект ("/blogs/webdev/" - указывает на блок «Веб-разработка», а не на конкретный файл).

Тип HTTP-запроса (также называемый HTTP-метод) указывает серверу на то, какое действие мы хотим произвести с ресурсом. Изначально (в начале 90-х) предполагалось, что клиент может хотеть от ресурса только одно - получить его, однако сейчас по протоколу HTTP можно создавать посты, редактировать профиль, удалять сообщения и многое другое. И эти действия сложно объединить термином «получение».

Для разграничения действий с ресурсами на уровне HTTP-методов и были придуманы следующие варианты:

  • GET - получение ресурса
  • POST - создание ресурса
  • PUT - обновление ресурса
  • DELETE - удаление ресурса
Обратите внимание на тот факт, что спецификация HTTP не обязывает сервер понимать все методы (которых на самом деле гораздо больше, чем 4) - обязателен только GET, а также не указывает серверу, что он должен делать при получении запроса с тем или иным методом. А это значит, что сервер в ответ на запрос DELETE /index.php HTTP/1.1 не обязан удалять страницу index.php на сервере, так же как на запрос GET /index.php HTTP/1.1 не обязан возвращать вам страницу index.php, он может ее удалять, например:)

В игру вступает REST

REST (REpresentational State Transfer) - это термин был введен в 2000-м году Роем Филдингом (Roy Fielding) - одним из разработчиков протокола HTTP - в качестве названия группы принципов построения веб-приложений. Вообще REST охватывает более широкую область, нежели HTTP - его можно применять и в других сетях с другими протоколами. REST описывает принципы взаимодействия клиента и сервера, основанные на понятиях «ресурса» и «глагола» (можно понимать их как подлежащее и сказуемое). В случае HTTP ресурс определяется своим URI, а глагол - это HTTP-метод.

REST предлагает отказаться от использования одинаковых URI для разных ресурсов (то есть адреса двух разных статей вроде /index.php?article_id=10 и /index.php?article_id=20 - это не REST-way) и использовать разные HTTP-методы для разных действий. То есть веб-приложение, написанное с использованием REST подхода будет удалять ресурс при обращении к нему с HTTP-методом DELETE (разумеется, это не значит, что надо давать возможность удалить всё и вся, но любой запрос на удаление в приложении должен использовать HTTP-метод DELETE).

REST дает программистам возможность писать стандартизованные и чуть более красивые веб-приложения, чем раньше. Используя REST, URI для добавления нового юзера будет не /user.php?action=create (метод GET/POST), а просто /user.php (метод строго POST).

В итоге, совместив имеющуюся спецификацию HTTP и REST-подход наконец-то обретают смысл различные HTTP-методы. GET - возвращает ресурс, POST - создает новый, PUT - обновляет существующий, DELETE - удаляет.

Проблемы?

Да, есть небольшая проблема с применением REST на практике. Проблема эта называется HTML.

PUT/DELETE запросы можно отправлять посредством XMLHttpRequest, посредством обращения к серверу «вручную» (скажем, через curl или даже через telnet), но нельзя сделать HTML-форму, отправляющую полноценный PUT/DELETE-запрос.

Дело в том, спецификация HTML не позволяет создавать формы, отправляющие данные иначе, чем через GET или POST. Поэтому для нормальной работы с другими методами приходится имитировать их искусственно. Например, в Rack (механизм, на базе которого Ruby взаимодействует с веб-сервером; с применением Rack сделаны Rails, Merb и другие Ruby-фреймворки) в форму можно добавить hidden-поле с именем "_method", а в качестве значения указать название метода (например, «PUT») - в этом случае будет отправлен POST-запрос, но Rack сможет сделать вид, что получил PUT, а не POST.

Видя в кино совокупляющихся людей, мы иной раз отмечаем: надо же, как хорошо сыграли! Прямо хоть «Оскар» давай! О том, что секс может быть не симулирован, никто даже не задумывается - мы ведь знаем, какое огромное количество "посторонних зрителей" обычно присутствует на съемочной площадке, да и вообще, если все взаправду, то это уже по-другому называется и на полки обычных видеомагазинов не попадает. Но из каждого правила бывают исключения, и в редких случаях реальные соития все же проникают на большой экран. Мы вспомнили наиболее примечательные примеры из этого ряда.

Постер к фильму "Свит Свитбэк: Песня мерзавца"

Инди-режиссер Мелвин Ван Пиблз точно знал, что ему нужно, когда писал сценарий, снимал и монтировал фильм о злоключениях чернокожей секс-машины по имени Свит Свитбэк. Главному герою приходится нарушить множество существовавших в начале 70-х жанровых табу: убивать собак и полицейских, мочиться и, конечно, много заниматься сексом, в том числе межрасовым. Подписать на такое кого-то было непросто, и ни на каскадера, ни даже на дублера у Мелвина денег не имелось, потому режиссер сам исполнил главную роль, мужественно проведя перед камерой ряд половых актов с едва знакомыми людьми. Подтверждением того, что все было взаправду, стала подхваченная им в процессе съемок гонорея, на лечение которой Ван Пиблз даже умудрился выбить энную сумму из Гильдии кинорежиссеров - правда, в итоге и эти деньги ушли на производство картины. Результат, как оказалось, стоил того: «Песня мерзавца» стала одним из самых прибыльных и обсуждаемых фильмов 1971 года, попутно породив целый новый поджанр - «блэксплотейшн».

Постер к фильму "Розовые фламинго"

Фильм знаменитого кинопровокатора Джона Уотерса о девиантных развлечениях двух семеек слабоумных фриков строго не рекомендуется для просмотра любителям «клубнички»: ваши нервы могут не выдержать увиденного. Поскольку режиссер, по собственному признанию, добивался от аудитории не оваций, а рвотной реакции (на премьере зрителям даже раздавали гигиенические пакеты), то и методы у него соответствующие: секс с участием раздавленных кур, дефекация и мастурбация, поедание одним из персонажей собачьего дерьма, минет матери собственному сыну. То, что «мать» играл знаменитый трансвестит Дивайн (настоящее имя Харрис Глен Милстед), приятности картине не доставляет; прочем, при всей своей непотребности, сексуальная составляющая все же несколько меркнет на фоне какашек, которые Дивайн, согласно его интервью разных лет, то ли ел, то ли не ел. В итоге режиссер положил конец кривотолкам, ответственно заявив, что ввиду практически нулевого бюджета на реквизит и дублеров у него финансов не имелось. Так что все было «по-чесноку» (за исключениям разве что каннибализма), и несчастные куры, увы, тоже умерли по-настоящему.

Кадр из фильма "Разыскивающий"


Триллер Уильяма Фридкина о серийном убийце, расчленяющем геев, запомнился зрителям не только участием Аль Пачино , но и сценами однополого секса, запечатленного камерой в многочисленных гей-клубах. «Все было по-настоящему, - признавался позже режиссер “Изгоняющего дьявола ”, рассказывая, что изначально нью-йоркские геи, с которыми он заводил знакомства в спецбарах, помогли ему со сбором материала для ленты, а потом они же в ней и сыграли. - В моем фильме нет членов Гильдии актеров массовки. Мы заплатили этим ребятам как статистам, но на самом деле они просто тусовались в тех местах, где мы снимали, и делали вот это самое». Студии, профинансировавшие фильм, остались не в восторге от результата, которому светил порнографический рейтинг «Х», и заставили его чудовищно изрезать, оставив на полу монтажной большую часть «клубнички». Но лента все равно провалилась в прокате - считается, что именно она забила последний гвоздь в гроб эпохи Нового Голливуда, дававшей многим независимым режиссерам деньги на съемки фильмов «не для всех». Вырезанные сцены позже, к слову, были восстановлены Джеймсом Франко в документалке «Интерьер. Кожаный бар» - и правильно, не зря же Фридкин старался, в самом деле.

Постер к фильму "Империя чувств"


История японской проститутки 30-х годов, несмотря на шокирующую откровенность сопровождающих ее сексуальных сцен, даже в родной Японии стоившую ленте цензурных правок, а режиссеру Нагиса Осима - судебного обвинения, в целом все же не имела таких серьезных проблем с прокатом, как последующие образчики эротического жанра. Ей удалось заработать и культовый статус, подкрепленный несомненными художественными достоинствами, и овацию в Каннах. К 1990 году «Империя чувств» сумела проникнуть даже в советские кинотеатры (пусть и с грифом «детям до шестнадцати просмотр запрещен»), снеся неискушенным гражданам крышу демонстрацией фелляции и прочих недвусмысленных проникновений и вызвав в СМИ возмущение «актами подлинного совокупления без всякой вуали». Так советский человек понял: в СССР секса, может, и нет, но в Японии он точно есть. К слову, сцена кастрации, присутствующая в «Империи чувств», все же не была настоящей - даже для японских кинематографистов, не особенно обременяющих себя вопросами нравственности, это было бы слишком.

Постер к фильму "Калигула"


Те, кто не знаком с историей создания «Калигулы», удивляются, как это Тинто Брасс умудрился заманить в порнофильм таких актеров, как Малкольм МакДауэлл , Джон Гилгуд , Питер О’Тул , Хелен Миррен . Ларчик открывается просто: несмотря на репутацию Брасса, лента не задумывалась им как порнографическая - любитель небритых подмышек действительно планировал сделать историческое полотно о кровавом римском императоре, и весь снятый им секс был симулирован. Но после того, как спонсор, издатель порножурнала «Пентхаус» Боб Гуччионе, стал требовать «тру хардкора» (статус «взрослого кино» позволил бы увеличить цену кинобилетов), Брасс заартачился и был уволен, а Гуччионе сам сел в режиссерское кресло и доснял шесть минут чистой порнографии, которая была довольно грубо вмонтирована в уже готовое кино без предупреждения остальных участников проекта. Нужно ли говорить о том, как громко стукнулись об пол челюсти исполнителей главных ролей на премьере.

Постер к фильму "Кен Парк"


После скандальных, но все-таки не порнографических «Деток » о сексуальной жизни подростков режиссер Ларри Кларк не успокоился и снял «Кен Парк» - снова про подростков, - в котором заставил своих героев зайти на территорию куннилингуса, минета, мастурбации, группового секса и других сложно симулируемых вещей, показанных крупным планом. Учитывая достаточно юный возраст актеров, которым пришлось участвовать в действиях сексуального характера, фильм вызвал нешуточное бурление в прессе и был запрещен в ряде стран, в том числе в США. Аргументы режиссера, уверявшего, что всем участникам проекта уже исполнилось 18, то есть они с полным правом могут сниматься в любом хардкорном порно, мало что изменили в глазах большей части консервативного общества, рассудившего: может, конечно, подростки и занимаются сексом, но показывать это в кинотеатрах все-таки не надо. А то вдруг еще зрители что-то новое узнают…

Постер к фильму "Бурый кролик"


Никто бы сегодня не помнил этого фильма, если бы не Хлои Севиньи в главной женской роли, которую центральный актер и по совместительству режиссер ленты Винсент Галло (он же продюсер и автор сценария) уломал на крупноплановую фелляцию себе, любимому. В Каннах «Бурого кролика» так освистали, что Галло пообещал завязать с режиссурой, но, впрочем, слова не сдержал. Карьера Севиньи тоже предсказуемо хрустнула - следующие лет 10 ни одно ее интервью не обходилось без покаянных речей о том, что она напрасно доверилась чутью режиссера, обещавшего снять пронзительный фестивальный хит. Сегодня, в эпоху взлома айфонов, такими видео уже никого удивишь, но в начале нулевых подобные скандалы были еще в диковинку, так что девушке от общества здорово досталось. Тот факт, что по сюжету ее героиня была наркоманкой, да и вообще скандальный минет случился лишь в воспаленной фантазии персонажа Галло, мало что изменил: на пленке-то все было более чем реальным, в чем и поспешили убедиться полчища зрителей, следующие лет десять активно качавшие скандальную ленту из Сети лишь ради просмотра той самой сцены.

Постер к фильму "9 песен"


Есть мнение, что моду на фестивальные фильмы, в которых обилие секса прикрывает недостатки режиссуры и актерской игры, заложила музыкальная эротическая драма «9 песен» Майкла Уинтерботтома , содержание которой вкратце можно описать словами «ученый и студентка занимаются сексом, в промежутках - концертные номера». Несимулированные половые контакты между героями Кирана О"Брайена и Марго Стилли включали полный джентльменский набор: классический секс, оральный, эякуляция и прочие неприкрытые атрибуты порножанра. Актерам дали возможность «порепетировать» перед съемками (часть этого материала позже вошла в фильм), после чего они дали согласие на основные съемки, но, правда, когда камера была выключена, О’Брайен и Стилли нисколько друг другом не интересовались. Сношения, показанные в фильме, большинством критиков были признаны «неаппетитными», а сюжет - отсутствующим (у ленты и правда не было никакого сценария). Кроме того, британский парламент гневно осудил режиссера, решившего потроллить общественные вкусы сакраментальным вопросом «почему в кино нельзя показывать занятия любовью, ведь это так же естественно, как принимать пищу?», а фотомодель, сыгравшая главную роль, перед релизом попросила убрать ее имя из титров. Позже, правда, Марго перестала скрываться: какими бы слабыми во всех планах ни оказались «9 песен», для нее они стали стартом довольно успешной актерской карьеры.

Постер к фильму "Трахни меня"


Наивно думать, что реального секса от актеров могут требовать только режиссеры-мужчины. Криминальный триллер «Трахни меня», поставленный француженками Вирджини Депант и Корали Трин Ти , с самого начала планировался ими как гремучий сплав жанрового кино в духе «Прирожденных убийц » и «Тельмы и Луизы » со сценами жесткого порева (благо у второй постановщицы имелся большой опыт в этом плане, причем по обе стороны камеры). На роли главных героинь - проститутки Надин и порноактрисы Ману - были выбраны настоящие актрисы категории «икс», что позволило им правдиво отыграть порносцены, которыми нашпигована лента, да и с драматической составляющей справиться достаточно неплохо. Правда, сама история об озлобленных на мужчин девушках с трудным прошлым, которые в поисках мести трахают и убивают всех, кто им попадается на пути, была воспринята зрителем слишком жестокой и феминистичной, а героини получились по-настоящему отталкивающими. Как следствие, лента была запрещена к прокату в нескольких странах и имела проблемы с цензурой даже в либеральной Франции. Впрочем, было бы странно, если бы вышло как-то по-другому.

Постер к фильму "Необратимость"


Мы знаем, о чем вы сейчас подумали. Но нет, спешим разочаровать: знаменитая десятиминутная сцена анального изнасилования Моники Белуччи в подземном переходе, сделавшая карьеру молодому французскому режиссеру Гаспару Ноэ , является имитацией от первого до последнего кадра (как, к слову, и анальная пенетрация в «Последнем танго в Париже », раз уж зашла речь о знаменитых шоковых киномоментах). Зато в фильме есть другие несымитированные моменты, такие как фелляция и мастурбация. Ноэ и до и после увлекался порносценами - хардкорные моменты можно найти чуть ли не в каждом его фильме, начиная с полнометражного дебюта «Один против всех » и заканчивая короткометражками разных лет, а во «Входе в пустоту » он изощрился и вовсе показал половой акт изнутри, правда, то была уже фотореалистичная компьютерная анимация. К слову, эротическая сцена, в которой Белуччи занята с Венсаном Касселем , тоже снята «натурально», поскольку во время съемок актеры пребывали друг с другом в счастливом браке. Но в данном случае Ноэ пощадил чувства супругов и решил обойтись легкой эротикой.

Постер к фильму "Клуб «Shortbus»"


В своем ромкоме о нью-йоркском клубе любителей секса Джон Кэмерон Митчелл умудрился показать целый спектр «взрослых удовольствий» - от мастурбации и группового секса до, как бы это сказать покорректней, аутофелляции. О том, что все оргазмы в «Клубе Shortbus» настоящие, постановщик на премьере мог бы и не сообщать: все и так видно невооруженным глазом. «Я не считаю свой фильм порнографическим, - говорил он позже. - Так как порнография характеризуется отсутствием художественных задач, ее цель - возбудить. А я не думаю, что у кого-либо возникнет эрекция во время просмотра моего фильма». Порно или нет - на эту тему можно долго спорить, но подобную раскованность в кадре вряд ли могли себе позволить знаменитости, потому актеры набирались по объявлению: Митчелл отсмотрел пять сотен видеозаявок из разных стран, прежде чем нашел достаточно киногеничных храбрецов, готовых отбросить ложный стыд. Чтобы тем было проще раскрепоститься, на съемках откровенных сцен он и оператор работали обнаженными. Несмотря на то что фильм был снят красиво и действительно мог похвастать наличием довольно занимательного сюжета, консервативную общественность несколько ошарашил вываленный на нее калейдоскоп сексуальной разнузданности, так что исполнительница одной из главных ролей, канадская радиоведущая Ли Сук-Йин, после выхода «Клуба Shortbus» в прокат едва не лишилась работы. К счастью, Фрэнсису Форду Копполе лента понравилась, и его заступничество решило вопрос.

Постер к фильму "Романс Х"

Француженка Катрин Брейя еще в дебютной драме «Настоящая девчонка », запрещенной везде, где только можно, и провалявшейся более 20 лет на полке, показала, какие затейливые вещи может страдающая от скуки девушка-подросток творить со своей вагиной. В «Романсе Х» она решила проследить, на что готова женщина, с которой отказывается спать любимый мужчина. На помощь был призван знаменитый порноактер Рокко Сиффреди, помогший героине раскрепоститься до известных пределов - критики насчитали мастурбацию, минет, половой акт, эякуляцию и прочие кунштюки вроде садо-мазо; все это, как можно понять, без какой-либо цензуры, страха и упрека. Цензура началась позже, когда некоторые страны затруднились с определением возрастного рейтинга ленты, так что какой-то период времени зрителю предлагалось выбирать между несколькими версиями разной степени порезанности. В итоге оригинальная версия была показана в ночном телеэфире сразу в нескольких странах, и аудитория успокоилась: ну, Рокко Сиффреди немножко в кадре эякулирует, ну да… То есть ничего такого революционного. Было бы куда апокалиптичней, если бы он вместо своей обычной работы шекспировские монологи с придыханием читал.

Постер к фильму "Интим"


Он - бармен, она - театральная актриса. У них есть маленький секрет, о котором не стоит знать окружающим. Но чем дальше длится их тайная связь, тем меньше устраивают одинокого бармена правила игры… «Интим» Патриса Шеро зацепил глаз зрителя не сколько даже натуралистичностью показа встреч двух людей, у которых, кроме быстрого секса по средам, нет ничего общего, сколько отталкивающим характером этого натурализма: ни грима, ни косметики, добавьте к этому волосатые ноги, прыщи, неидеальность фигур, и вам вряд ли захочется пересматривать ленту, единственной целью которой, похоже, является раскрытие эстетики некрасивого. Впрочем, невзирая на все сюжетные провисания, крупноплановый минет в исполнении новозеландки Кэрри Фокс Уиллема Дефо с Шарлоттой Генсбур в «Антихристе» был вполне реальным. А Шиа ЛаБаф , голову которого, как клялся пресс-релиз «Нимфоманки», приклеили на компьютере к чужому совокупляющемуся торсу, после премьеры признался в интервью, что ничего такого на съемочной площадке не симулировал. В общем, можно спорить, кому конкретно принадлежали причиндалы, но как минимум то, что во все всех вышеперечисленных лентах возбужденные половые органы вступали в неиллюзорный контакт, сомнению не подлежит.

Оставайтесь с нами на связи и получайте свежие рецензии, подборки и новости о кино первыми!

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

О формах HTML

Формы HTML, наиболее распространенный метод сбора сведений на основе веб, состоят из группы специальных тегов HTML, представляющих собой элементы пользовательского интерфейса на веб-странице. Текстовые поля, кнопки и флажки являются примерами элементов, позволяющих пользователям взаимодействовать с веб-страницей и отправлять сведения на веб-сервер.

Например, следующие теги HTML генерируют форму, в которую пользователь может ввести имя, фамилию и возраст, включающую кнопку для отправки сведений на веб-сервер. Эта форма также содержит скрытый тег ввода (не отображающийся в веб-обозревателе), который можно использовать для передачи на веб-сервер дополнительных сведений.

Подробное рассмотрение всех тегов формы HTML выходит за рамки данного раздела. Существует множество источников, рассматривающих создание полезных и удобных форм HTML. Например, с помощью средства просмотра исходного текста страниц используемого обозревателя можно посмотреть, как сделаны формы HTML на других веб-узлах. Кроме того, сведения о передовом использовании форм HTML и других технологий Интернета содержатся на веб-узле Microsoft MSDN Online по адресу http://msdn.microsoft.com/ .

Обработка в ASP сведений, введенных в форму

Когда форма HTML создана, необходимо обработать сведения, введенные пользователем, то есть, отправить их файлу.asp для анализа и других действий. Снова изучите программу HTML, приведенную в предыдущем примере. Заметьте, что атрибут ACTION тега

ссылается на файл Profile.asp. Когда пользователь отправляет сведения HTML, обозреватель передает их методом POST файлу.asp на сервере, в данном случае - Profile.asp. Файл.asp может содержать сценарии, обрабатывающие сведения и взаимодействующие с другими сценариями, компонентами COM и ресурсами, например, с базой данных.

Существует три основных способа сбора сведений, введенных в формы HTML, с использованием ASP:

  • статический файл.htm, содержащий форму, значения из которой передаются в файл.asp;
  • файл.asp, создающий форму, отправляющую сведения в другой файл.asp;
  • файл.asp, создающий форму, отправляющую сведения самой себе, то есть, файлу.asp, содержащему форму.

Первые два метода работают так же, как формы, взаимодействующие с другими программами на веб-сервере, кроме ASP, что существенно упрощает задачу сбора и обработки сведений, введенных в форму. Третий метод особенно эффективен и будет рассмотрен в разделе .

Получение данных, введенных в форму

Объект ASP Request предоставляет два семейства, облегчающих получение сведений, введенных в форму и отправленных по запросу URL.

Семейство QueryString

Семейство QueryString возвращает значения формы, переданные веб-серверу, в виде текста следующего после вопросительного знака в запрошенном адресе URL. Значения формы можно добавить к запрошенному адресу URL, используя либо метод HTTP GET, либо вручную добавив значения формы в адрес URL.

Например, если в предыдущем примере формы используется метод GET (METHOD="GET") и пользователь введет Clair , Hector и 30 , на сервер будет отправлен следующий запрос URL:

Http://Workshop1/Painting/Profile.asp?FirstName=Clair&LastName=Hector&Age=30&UserStatus=New

Файл Profile.asp может содержать следующий сценарий обработки данных формы:

Привет, <%= Request.QueryString("FirstName") %> <%= Request.QueryString("LastName") %>. Вам <%= Request.QueryString("Age") %> лет! <% If Request.QueryString("UserStatus") = "New" Then Response.Write "Вы в первый раз посещаете данный веб-узел!" End if %>

В этом случае веб-сервер вернет пользователю веб-обозревателя следующий текст:

Привет, Clair Hector. Вам 30 лет! Вы в первый раз посещаете данный веб-узел!

Семейство QueryString также содержит необязательный параметр, который можно использовать для доступа к одному из нескольких значений в запрошенном адресе URL (используя метод GET). Кроме того, используя свойство Count , можно узнать число значений указанного типа.

Например, форма, содержащая раскрывающийся список, может генерировать следующий запрос:

Http://OrganicFoods/list.asp?Food=Apples&Food=Olives&Food=Bread

Получение данных запроса в контроллере

Контроллеры часто нуждаются в доступе к данным из входящего запроса, таким как значения строки запроса, значения формы и параметры, извлеченные из URL системой маршрутизации. Существуют три основных способа доступа к таким данным:

    извлечение данных из набора объектов контекста;

    передача данных в качестве параметров методу действия;

    явное обращение к средству привязки моделей инфраструктуры.

В этой статье мы рассмотрим подходы к получению исходных данных для методов действий, концентрируя основное внимание на объектах контекста и параметрах методов действий.

Получение данных из объектов контекста

Когда вы создаете контроллер путем его наследования от базового класса Controller, то получаете в свое распоряжение набор удобных свойств для доступа к информации, касающейся запроса. К таким свойствам относятся Request, Response, RouteData, HttpContext и Server. Каждое перечисленное свойство отвечает за конкретный аспект запроса. Мы называем их удобными свойствами, поскольку каждое из них извлекает определенный тип данных из экземпляра ControllerContext для запроса (который доступен через свойство Controller.ControllerContext).

Наиболее часто используемые объекты контекста и свойства описаны в таблице ниже:

Часто используемые объекты контекста ControllerContext и свойства
Свойство Тип Описание
Request.QueryString NameValueCollection

Переменные GET, отправленные с этим запросом

Request.Form NameValueCollection

Переменные POST, отправленные с этим запросом

Request.Cookies HttpCookieCollection

Cookie-наборы, отправленные браузером с этим запросом

Request.HttpMethod string

Метод HTTP (команда наподобие GET или POST), используемый для этого запроса

Request.Headers NameValueCollection

Полный набор заголовков HTTP, отправленных с этим запросом

Request.Url Uri

Элемент RouteTable.Routes, выбранный для этого запроса

Request.UserHostAddress string

IP-адрес пользователя, сделавшего этот запрос

RouteData.Route RouteBase

Элемент Routetable.Routes, выбранный для этого запроса

RouteData.Values RouteValueDictionary

Активные параметры маршрута (либо извлеченные из URL, либо стандартные значения)

HttpContext.Application HttpApplicationStateBase

Хранилище состояния приложения

HttpContext.Cache Cache

Хранилище кеша приложения

HttpContext.Items IDictionary

Хранилище состояния для текущего запроса

HttpContext.Session HttpSessionStateBase

Хранилище состояния для сеанса посетителя

User IPrincipal

Аутентификационная информация о вошедшем пользователе

TempData TempDataDictionary

Временные элементы данных, сохраненные для текущего пользователя

Отдельные свойства, которые здесь упоминались - Request, HttpContext и т.д. - предоставляют объекты контекста. Здесь они подробно не рассматриваются (поскольку являются частью платформы ASP.NET), но следует знать, что такие объекты предоставляют доступ к полезной информации и средствам, и более подробно вы можете прочитать о них в разделе, посвященном ASP.NET Web Forms .

Метод действия может использовать любой из этих объектов контекста для получения информации о запросе, как демонстрируется в примере ниже:

Using System; using System.Web; using System.Web.Mvc; namespace ControllersAndActions.Controllers { public class DerivedController: Controller { public ActionResult Index() { // ... } public ActionResult ActionMethod() { // Получить доступ к разнообразным свойствам из объектов контекста string userName = User.Identity.Name; string serverName = Server.MachineName; string clientIP = Request.UserHostAddress; DateTime dateStamp = HttpContext.Timestamp; // Извлечь отправленные данные из Request.Form string oldProductName = Request.Form["OldName"]; string newProductName = Request.Form["NewName"]; // ... return View(); } } }

Исследовать огромный диапазон доступной информации о контексте запроса можно с помощью средства IntelliSense (в методе действия наберите this. и просмотрите сведения во всплывающем окне) и сети Microsoft Developer Network (просмотрите документацию по классу System.Web.Mvc.Controller и его базовым свойствам или по классу System.Web.Mvc.ControllerContext).

Использование параметров метода действия

Как было показано в предыдущих статьях, методы действий могут принимать параметры. По сравнению с ручным извлечением из объектов контекста это более аккуратный способ получения входных данных, к тому же он упрощает восприятие кода методов действий. Например, предположим, что имеется следующий метод действия, использующий объекты контекста:

// ... public ActionResult WeatherForecast() { string city = (string)RouteData.Values["city"]; DateTime forDate = DateTime.Parse(Request.Form["forDate"]); // реализовать прогноз погоды return View(); } // ...

Его можно переписать так, чтобы в нем применялись параметры:

// ... public ActionResult WeatherForecast(string city, DateTime forDate) { // реализовать прогноз погоды return View(); } // ...

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

Полезно отметить, что методы действий не допускают применения параметров out или ref. Их использование не имеет никакого смысла; встретив такой параметр, MVC Framework сгенерирует исключение.

Инфраструктура MVC Framework предоставит значения для параметров метода действия, автоматически проверив объекты контекста и свойства, в том числе Request.QueryString, Request.Form и RouteData.Values. Имена параметров трактуются как нечувствительные к регистру символов, поэтому параметр метода действия по имени city может получить значение, например, из Request.Form["City"].

Создание объектов параметров

Базовый класс Controller получает значения для параметров методов действий с использованием компонентов MVC Framework, называемых поставщиками значений и связывателями моделей . Поставщики значений представляют набор элементов данных, доступных контроллеру. Существуют встроенные поставщики значений, которые производят выборку элементов из Request.Form, Request.QueryString, Request.Files и RouteData.Values. Эти значения затем передаются связывателям моделей, которые пытаются отобразить их на типы параметров, принимаемых методами действий.

Стандартные связыватели моделей могут создавать и заполнять объекты любого типа.NET, включая коллекции и специальные типы, специфичные для проектов. Соответствующий пример приводился в статье Админ панель: редактирование товаров , в котором отправляемая администратором форма была представлена методу действия как одиночный объект Game, несмотря на то, что индивидуальные значения были разбросаны по элементам HTML-формы.

Обязательные и необязательные параметры

Если MVC Framework не может найти значение для параметра ссылочного типа (вроде string или object), метод действия по-прежнему вызывается, но для этого параметра используется значение null. Если не удается найти значение для параметра типа значения (такого как int или double), генерируется исключение и метод действия не вызывается. Сказанное можно интерпретировать и по-другому:

    Параметры типа значения являются обязательными. Чтобы сделать их необязательными, необходимо либо задать стандартное значение (как показано в следующем разделе), либо указать для параметра тип, допускающий значения null (наподобие int? или DateTime?); последнее позволит MVC Framework передавать null, если значение не доступно.

    Параметры ссылочного типа являются необязательными. Чтобы сделать их обязательными (гарантируя передачу только значений, отличных от null), необходимо добавить в начало метода действия код, отклоняющий значения null. Например, если значение равно null, можно генерировать исключение ArgumentNullException.

Указание стандартных значений для параметров

Если вы хотите обрабатывать запросы, которые не содержат значений для параметров методов действий, но при этом не проверять значения на предмет равенства null и не генерировать исключения в коде, можете воспользоваться средством необязательных параметров языка C#. В примере ниже приведен пример:

// ... public ActionResult WeatherForecast(DateTime forDate, string city = "Москва", int page = 1) { // реализовать прогноз погоды return View(); } // ...

Чтобы пометить параметр как необязательный, необходимо при определении присвоить ему значение. В примере были предоставлены стандартные значения для параметров city и page. Инфраструктура MVC Framework попытается получить значения для этих параметров из запроса, но если окажется, что значения не доступны, будут использоваться стандартные значения.

Для параметра city типа string это означает, что проверка значения на предмет равенства null не понадобится. Если в обрабатываемом запросе значение для city не указано, методу действия для этого параметра будет передана строка "Москва". Что касается параметра типа int, то переживать о возможной ошибке, если значение для page не задано, не придется. Методу действия для этого параметра будет передано стандартное значение, равное 1.

Необязательные параметры могут использоваться для литеральных типов, которые представляют собой типы, определяемые без применения ключевого слова new, в том числе string, int и double.

Если запрос содержит значение для параметра, однако оно не может быть преобразовано к необходимому типу (например, когда пользователь предоставляет нечисловую строку для параметра int), то инфраструктура передает стандартное значение, принятое для данного типа параметра (т.е. 0 для параметра int), и регистрирует указанное в запросе значение как ошибку проверки достоверности в специальном объекте контекста по имени ModelState .

Если не проверять ошибки достоверности данных в ModelState, можно столкнуться со странными ситуациями, когда пользователь вводит некорректные данные внутри формы, но запрос обрабатывается, как будто бы пользователь вообще не вводил данные или же ввел стандартные значения.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows