Содержание
запросы — структура (заголовок и тело), методы, строка статуса и коды состояния, ответы
HTTP-запросы: структура, методы, строка статуса и коды состояния
Андрей Салита
Инженер ИБ
Большинство используемых нами веб- и мобильных приложений постоянно взаимодействуют с глобальной сетью. Почти все подобные коммуникации совершаются с помощью запросов по протоколу HTTP. Рассказываем о них подробнее.
Большинство используемых нами веб- и мобильных приложений постоянно взаимодействуют с глобальной сетью. Почти все подобные коммуникации совершаются с помощью запросов по протоколу HTTP. Рассказываем о них подробнее.
Базово о протоколе HTTP
HTTP (HyperText Transfer Protocol, дословно — «протокол передачи гипертекста») представляет собой протокол прикладного уровня, используемый для доступа к ресурсам Всемирной Паутины. Под термином гипертекст следует понимать текст, в понятном для человека представлении, при этом содержащий ссылки на другие ресурсы.
Данный протокол описывается спецификацией RFC 2616. На сегодняшний день наиболее распространенной версией протокола является версия HTTP/2, однако нередко все еще можно встретить более раннюю версию HTTP/1.1.
В обмене информацией по HTTP-протоколу принимают участие клиент и сервер. Происходит это по следующей схеме:
- Клиент запрашивает у сервера некоторый ресурс.
- Сервер обрабатывает запрос и возвращает клиенту ресурс, который был запрошен.
Схема коммуникации устройств по HTTP-протоколу.
По умолчанию для коммуникации по HTTP используется порт 80, хотя вместо него может быть выбран и любой другой порт. Многое зависит от конфигурации конкретного веб-сервера.
Подробнее о протоколе HTTP читайте по ссылке →
HTTP-сообщения: запросы и ответы
Данные между клиентом и сервером в рамках работы протокола передаются с помощью HTTP-сообщений. Они бывают двух видов:
- Запросы (HTTP Requests) — сообщения, которые отправляются клиентом на сервер, чтобы вызвать выполнение некоторых действий. Зачастую для получения доступа к определенному ресурсу. Основой запроса является HTTP-заголовок.
- Ответы (HTTP Responses) — сообщения, которые сервер отправляет в ответ на клиентский запрос.
Само по себе сообщение представляет собой информацию в текстовом виде, записанную в несколько строчек.
В целом, как запросы HTTP, так и ответы имеют следующую структуру:
- Стартовая строка (start line) — используется для описания версии используемого протокола и другой информации — вроде запрашиваемого ресурса или кода ответа. Как можно понять из названия, ее содержимое занимает ровно одну строчку.
- HTTP-заголовки (HTTP Headers) — несколько строчек текста в определенном формате, которые либо уточняют запрос, либо описывают содержимое тела сообщения.
- Пустая строка, которая сообщает, что все метаданные для конкретного запроса или ответа были отправлены.
- Опциональное тело сообщения, которое содержит данные, связанные с запросом, либо документ (например HTML-страницу), передаваемый в ответе.
Рассмотрим атрибуты HTTP-запроса подробнее.
Стартовая строка
Стартовая строка HTTP-запроса состоит из трех элементов:
- Метод HTTP-запроса (method, реже используется термин verb). Обычно это короткое слово на английском, которое указывает, что конкретно нужно сделать с запрашиваемым ресурсом. Например, метод GET сообщает серверу, что пользователь хочет получить некоторые данные, а POST — что некоторые данные должны быть помещены на сервер.
- Цель запроса. Представлена указателем ресурса URL, который состоит из протокола, доменного имени (или IP-адреса), пути к конкретному ресурсу на сервере. Дополнительно может содержать указание порта, несколько параметров HTTP-запроса и еще ряд опциональных элементов.
- Версия используемого протокола (либо HTTP/1.1, либо HTTP/2), которая определяет структуру следующих за стартовой строкой данных.
В примере ниже стартовая строка указывает, что в качестве метода используется GET, обращение будет произведено к ресурсу /index. html, по версии протокола HTTP/1.1:
Основные структурные элементы URL.
Разберемся с каждым из названных элементов подробнее.
Методы
Методы позволяют указать конкретное действие, которое мы хотим, чтобы сервер выполнил, получив наш запрос. Так, некоторые методы позволяют браузеру (который в большинстве случаев является источником запросов от клиента) отправлять дополнительную информацию в теле запроса — например, заполненную форму или документ.
Ниже приведены наиболее используемые методы и их описание:
Разберемся с каждым из названных элементов подробнее.
Метод | Описание |
GET | Позволяет запросить некоторый конкретный ресурс. Дополнительные данные могут быть переданы через строку запроса (Query String) в составе URL (например ?param=value).О составляющих URL мы поговорим чуть позже. |
POST | Позволяет отправить данные на сервер. Поддерживает отправку различных типов файлов, среди которых текст, PDF-документы и другие типы данных в двоичном виде. Обычно метод POST используется при отправке информации (например, заполненной формы логина) и загрузке данных на веб-сайт, таких как изображения и документы. |
HEAD | Здесь придется забежать немного вперед и сказать, что обычно сервер в ответ на запрос возвращает заголовок и тело, в котором содержится запрашиваемый ресурс. Данный метод при использовании его в запросе позволит получить только заголовки, которые сервер бы вернул при получении GET-запроса к тому же ресурсу. Запрос с использованием данного метода обычно производится для того, чтобы узнать размер запрашиваемого ресурса перед его загрузкой. |
PUT | Используется для создания (размещения) новых ресурсов на сервере. Если на сервере данный метод разрешен без надлежащего контроля, то это может привести к серьезным проблемам безопасности. |
DELETE | Позволяет удалить существующие ресурсы на сервере. Если использование данного метода настроено некорректно, то это может привести к атаке типа «Отказ в обслуживании» (Denial of Service, DoS) из-за удаления критически важных файлов сервера. |
OPTIONS | Позволяет запросить информацию о сервере, в том числе информацию о допускаемых к использованию на сервере HTTP-методов. |
PATCH | Позволяет внести частичные изменения в указанный ресурс по указанному расположению. |
URL
Получение доступа к ресурсам по HTTP-протоколу осуществляется с помощью указателя URL (Uniform Resource Locator). URL представляет собой строку, которая позволяет указать запрашиваемый ресурс и еще ряд параметров.
Использование URL неразрывно связано с другими элементами протокола, поэтому далее мы рассмотрим его основные компоненты и строение:
Поле Scheme используется для указания используемого протокола, всегда сопровождается двоеточием и двумя косыми чертами (://).
Host указывает местоположение ресурса, в нем может быть как доменное имя, так и IP-адрес.
Port, как можно догадаться, позволяет указать номер порта, по которому следует обратиться к серверу. Оно начинается с двоеточия (:), за которым следует номер порта. При отсутствии данного элемента номер порта будет выбран по умолчанию в соответствии с указанным значением Scheme (например, для http:// это будет порт 80).
Далее следует поле Path. Оно указывает на ресурс, к которому производится обращение. Если данное поле не указано, то сервер в большинстве случаев вернет указатель по умолчанию (например index.html).
Поле Query String начинается со знака вопроса (?), за которым следует пара «параметр-значение», между которыми расположен символ равно (=). В поле Query String могут быть переданы несколько параметров с помощью символа амперсанд (&) в качестве разделителя.
Не все компоненты необходимы для доступа к ресурсу. Обязательно следует указать только поля Scheme и Host.
Версии HTTP
Раз уж мы упомянули версию протокола как элемента стартовой строки, то стоит сказать об основных отличиях версий HTTP/1.X от HTTP/2.X.
Последняя стабильная, наиболее стандартизированная версия протокола первого поколения (версия HTTP/1.1) вышла в далеком 1997 году. Годы шли, веб-страницы становились сложнее, некоторые из них даже стали приложениями в том виде, в котором мы понимаем их сейчас. Кроме того, объем медиафайлов и скриптов, которые добавляли интерактивность страницам, рос. Это, в свою очередь, создавало перегрузки в работе протокола версии HTTP/1.1.
Стало очевидно, что у HTTP/1.1 есть ряд значительных недостатков:
- Заголовки, в отличие от тела сообщения, передавались в несжатом виде.
- Часто большая часть заголовков в сообщениях совпадала, но они продолжали передаваться по сети.
- Отсутствовала возможность так называемого мультиплексирования — механизма, позволяющего объединить несколько соединений в один поток данных. Приходилось открывать несколько соединений на сервере для обработки входящих запросов.
С выходом HTTP/2 было предложено следующее решение: HTTP/1.X-сообщения разбивались на так называемые фреймы, которые встраивались в поток данных.
Фреймы данных (тела сообщения) отделялись от фреймов заголовка, что позволило применять сжатие. Вместе с появлением потоков появился и ранее описанный механизм мультиплексирования — теперь можно было обойтись одним соединением для нескольких потоков.
Единственное о чем стоит сказать в завершение темы: HTTP/2 перестал быть текстовым протоколом, а стал работать с «сырой» двоичной формой данных. Это ограничивает чтение и создание HTTP-сообщений «вручную». Однако такова цена за возможность реализации более совершенной оптимизации и повышения производительности.
Заголовки
HTTP-заголовок представляет собой строку формата «Имя-Заголовок:Значение», с двоеточием(:) в качестве разделителя. Название заголовка не учитывает регистр, то есть между Host и host, с точки зрения HTTP, нет никакой разницы. Однако в названиях заголовков принято начинать каждое новое слово с заглавной буквы. Структура значения зависит от конкретного заголовка. Несмотря на то, что заголовок вместе со значениями может быть достаточно длинным, занимает он всего одну строчку.
В запросах может передаваться большое число различных заголовков, но все их можно разделить на три категории:
- Общего назначения, которые применяются ко всему сообщению целиком.
- Заголовки запроса уточняют некоторую информацию о запросе, сообщая дополнительный контекст или ограничивая его некоторыми логическими условиями.
- Заголовки представления, которые описывают формат данных сообщения и используемую кодировку. Добавляются к запросу только в тех случаях, когда с ним передается некоторое тело.
Ниже можно видеть пример заголовков в запросе:
Самые частые заголовки запроса
Заголовок | Описание |
Host | Используется для указания того, с какого конкретно хоста запрашивается ресурс. В качестве возможных значений могут использоваться как доменные имена, так и IP-адреса. На одном HTTP-сервере может быть размещено несколько различных веб-сайтов. Для обращения к какому-то конкретному требуется данный заголовок. |
User-Agent | Заголовок используется для описания клиента, который запрашивает ресурс. Он содержит достаточно много информации о пользовательском окружении. Например, может указать, какой браузер используется в качестве клиента, его версию, а также операционную систему, на которой этот клиент работает. |
Refer | Используется для указания того, откуда поступил текущий запрос. Например, если вы решите перейти по какой-нибудь ссылке в этой статье, то вероятнее всего к запросу будет добавлен заголовок Refer: https://selectel.ru |
Accept | Позволяет указать, какой тип медиафайлов принимает клиент. В данном заголовке могут быть указаны несколько типов, перечисленные через запятую (‘ , ‘). А для указания того, что клиент принимает любые типы, используется следующая последовательность — */*. |
Cookie | Данный заголовок может содержать в себе одну или несколько пар «Куки-Значение» в формате cookie=value. Куки представляют собой небольшие фрагменты данных, которые хранятся как на стороне клиента, так и на сервере, и выступают в качестве идентификатора. Куки передаются вместе с запросом для поддержания доступа клиента к ресурсу. Помимо этого, куки могут использоваться и для других целей, таких как хранение пользовательских предпочтений на сайте и отслеживание клиентской сессии. Несколько кук в одном заголовке могут быть перечислены с помощью символа точка с запятой (‘ ; ‘), который используется как разделитель. |
Authorization | Используется в качестве еще одного метода идентификации клиента на сервере. После успешной идентификации сервер возвращает токен, уникальный для каждого конкретного клиента. В отличие от куки, данный токен хранится исключительно на стороне клиента и отправляется клиентом только по запросу сервера. Существует несколько типов аутентификации, конкретный метод определяется тем веб-сервером или веб-приложением, к которому клиент обращается за ресурсом. |
Тело запроса
Завершающая часть HTTP-запроса — это его тело. Не у каждого HTTP-метода предполагается наличие тела. Так, например, методам вроде GET, HEAD, DELETE, OPTIONS обычно не требуется тело. Некоторые виды запросов могут отправлять данные на сервер в теле запроса: самый распространенный из таких методов — POST.
Ответы HTTP
HTTP-ответ является сообщением, которое сервер отправляет клиенту в ответ на его запрос. Его структура равна структуре HTTP-запроса: стартовая строка, заголовки и тело.
Строка статуса (Status line)
Стартовая строка HTTP-ответа называется строкой статуса (status line). На ней располагаются следующие элементы:
- Уже известная нам по стартовой строке запроса версия протокола (HTTP/2 или HTTP/1.1).
- Код состояния, который указывает, насколько успешно завершилась обработка запроса.
- Пояснение — короткое текстовое описание к коду состояния. Используется исключительно для того, чтобы упростить понимание и восприятие человека при просмотре ответа.
Так выглядит строка состояния ответа.
Коды состояния и текст статуса
Коды состояния HTTP используются для того, чтобы сообщить клиенту статус их запроса. HTTP-сервер может вернуть код, принадлежащий одной из пяти категорий кодов состояния:
Категория | Описание |
1xx | Коды из данной категории носят исключительно информативный характер и никак не влияют на обработку запроса. |
2xx | Коды состояния из этой категории возвращаются в случае успешной обработки клиентского запроса. |
3xx | Эта категория содержит коды, которые возвращаются, если серверу нужно перенаправить клиента. |
4xx | Коды данной категории означают, что на стороне клиента был отправлен некорректный запрос. Например, клиент в запросе указал не поддерживаемый метод или обратился к ресурсу, к которому у него нет доступа. |
5xx | Ответ с кодами из этой категории приходит, если на стороне сервера возникла ошибка. |
Полный список кодов состояния доступен в спецификации к протоколу, ниже приведены только самые распространенные коды ответов:
Категория | Описание |
200 OK | Возвращается в случае успешной обработки запроса, при этом тело ответа обычно содержит запрошенный ресурс. |
302 Found | Перенаправляет клиента на другой URL. Например, данный код может прийти, если клиент успешно прошел процедуру аутентификации и теперь может перейти на страницу своей учетной записи. |
400 Bad Request | Данный код можно увидеть, если запрос был сформирован с ошибками. Например, в нем отсутствовали символы завершения строки. |
403 Forbidden | Означает, что клиент не обладает достаточными правами доступа к запрошенному ресурсу. Также данный код можно встретить, если сервер обнаружил вредоносные данные, отправленные клиентом в запросе. |
404 Not Found | Каждый из нас, так или иначе, сталкивался с этим кодом ошибки. Данный код можно увидеть, если запросить у сервера ресурс, которого не существует на сервере. |
500 Internal Error | Данный код возвращается сервером, когда он не может по определенным причинам обработать запрос. |
Помимо основных кодов состояния, описанных в стандарте, существуют и коды состояния, которые объявляются крупными сетевыми провайдерами и серверными платформами. Так, коды состояния, используемые Selectel, можно посмотреть здесь.
Заголовки ответа
Response Headers, или заголовки ответа, используются для того, чтобы уточнить ответ, и никак не влияют на содержимое тела. Они существуют в том же формате, что и остальные заголовки, а именно «Имя-Значение» с двоеточием (:) в качестве разделителя.
Ниже приведены наиболее часто встречаемые в ответах заголовки:
Категория | Пример | Описание |
Server | Server: ngnix | Содержит информацию о сервере, который обработал запрос. |
Set-Cookie | Set-Cookie:PHPSSID=bf42938f | Содержит куки, требуемые для идентификации клиента. Браузер парсит куки и сохраняет их в своем хранилище для дальнейших запросов. |
WWW-Authenticate | WWW-Authenticate: BASIC realm=»localhost» | Уведомляет клиента о типе аутентификации, который необходим для доступа к запрашиваемому ресурсу. |
Тело ответа
Последней частью ответа является его тело. Несмотря на то, что у большинства ответов тело присутствует, оно не является обязательным. Например, у кодов «201 Created» или «204 No Content» тело отсутствует, так как достаточную информацию для ответа на запрос они передают в заголовке.
Безопасность HTTP-запросов, или что такое HTTPs
HTTP является расширяемым протоколом, который предоставляет огромное количество возможностей, а также поддерживает передачу всевозможных типов файлов. Однако, вне зависимости от версии, у него есть один существенный недостаток, который можно заметить если перехватить отправленный HTTP-запрос:
Да, все верно: данные передаются в открытом виде. HTTP сам по себе не предоставляет никаких средств шифрования.
Но как же тогда работают различные банковские приложения, интернет-магазины, сервисы оплаты услуг и прочие приложения, в которых циркулирует чувствительная информация пользователей?
Время рассказать про HTTPs!
HTTPs (HyperText Transfer Protocol, secure) является расширением HTTP-протокола, который позволяет шифровать отправляемые данные, перед тем как они попадут на транспортный уровень. Данный протокол по умолчанию использует порт 443.
Теперь если мы перехватим не HTTP , а HTTPs-запрос, то не увидим здесь ничего интересного:
Данные передаются в едином зашифрованном потоке, что делает невозможным получение учетных данных пользователей и прочей критической информации средствами обычного перехвата.
Три межсетевых экрана для любых потребностей бизнеса.
Если хотите подробнее узнать о деталях работы протокола, читайте статью в нашем блоге →
Как отправить HTTP-запрос и прочитать его ответ
Теория это, конечно, отлично, но ничего так хорошо не закрепляет материал, как практика
Мы рассмотрим несколько способов, как написать HTTP-запрос в браузер, послать HTTP-запрос на сервер и получить ответ:
- Инструменты разработчика в браузере.
- Утилита cURL.
Инструменты разработчика
Основной программой на наших устройствах, которая работает с HTTP-протоколом, в большинстве случаев является браузер. Помимо обычных пользователей, с браузерами часто работают и разработчики веб-приложений. Именно их инструментами мы воспользуемся для работы с запросами и ответами.
По нажатию комбинации клавиш [Ctrl+Shift+I] или просто [F12] в подавляющем большинстве современных браузеров у нас откроется окно инструментов разработчика, которая представляет собой панель с несколькими вкладками. Нужная нам вкладка обычно называется Network. Перейдем в нее, а в адресной строке введем URL того сайта, на который хотим попасть. В качестве примера воспользуемся сайтом блога Selectel — https://selectel.ru/blog/.
После нажатия Enter сайт начнет загружаться, а открытая вкладка Network — заполняться различными элементами, начиная все больше напоминать приборную панель самолета.
Не спешите пугаться. Это всего лишь список ресурсов, которые нужны для правильного отображения и работы сайта.
Нажав на любой из них, мы можем увидеть детали обработки отправленного запроса:
В данном запросе, например:
- URL, к которому было совершено обращение — https://selectel. ru/blog,
- Метод, который был использован в запросе — GET,
- И в качестве кода возврата сервер вернул нам страницу с кодом статуса — 200 OK
Утилита cURL
Следующий инструмент, с помощью которого мы сможем послать запрос на тот или иной сервер, это утилита cURL.
cURL (client URL) является небольшой утилитой командной строки, которая позволяет работать с HTTP и рядом других протоколов.
Для отправки запроса и получения ответа мы можем воспользоваться флагом -v и указанием URL того ресурса, который мы хотим получить. «Схему» HTTP-запроса можно увидеть на скрине ниже:
После запуска утилита выполняет:
- подключение к серверу,
- самостоятельно разрешает все вопросы, необходимые для отправки запроса по HTTPs,
- отправляет запрос, содержимое которого мы можем видеть благодаря флагу -v,
- принимая ответ от сервера, отображает его в командной строке «как-есть».
Помимо этого, у данной утилиты есть огромное количество опций, которые предоставляют возможности по детальной настройке отправляемых запросов. Все эти возможности и делают ее такой популярной у веб-разработчиков и других специалистов, которым приходится работать с протоколом HTTP.
Заключение
HTTP представляет собой расширяемый протокол прикладного уровня, на котором работает весь веб-сегмент интернета. В данной статье мы рассмотрели принцип его работы, структуру, «компоненты» HTTP-запросов. Коснулись вопросов отличия версий протокола, HTTPs — его расширения, добавляющего шифрование. Разобрали устройство запроса, поняли, как можно отправить HTTP-запрос и получить ответ от сервера.
Сетевое оборудование
Как проверить, насколько страница сайта соответствует запросу пользователя — Сервисы на vc.ru
Теория и обзор сервиса для анализа соответствия конкретной страницы пользовательскому запросу.
1331
просмотров
Привет, это PR-CY! Добро пожаловать в наш блог на VC, где мы делимся кейсами, советами и инструментами для продвижения и улучшения ваших сайтов. 😊
Быстро о теории: релевантность и что на нее влияет
Вводим в курс дела новичков. Пропустите, если разбираетесь в SEO.
Контентные страницы на сайте обычно создают под конкретные поисковые запросы пользователя. Утрируя, если нужно появиться в выдаче по запросу «зачем кошкам хвост», нужно написать материал, соответствующий этому запросу, то есть релевантный ему. Тексты про хвосты ящериц или кошачьи повадки не ответят на вопрос пользователя «зачем кошкам хвост?». Они появятся в выдаче по другим запросам.
Поисковые системы не дают списка признаков, по которым они определяют релевантность. Но сеошники сошлись, что влияет это:
- вхождения ключевого запроса в название страницы, заголовок и подзаголовки, сам текст и мета-теги;
- количество употреблений ключевого запроса на странице — но в меру, без переспама;
- употребления в тексте синонимов поискового запроса и других слов по этой теме;
- расположение ключевых запросов на странице — больше значимости в начале текста;
- степень раскрытия темы — нужно ли пользователю возвращаться в поиск и искать еще информацию;
- наличие ссылок с других сайтов, подходящих по тематике вашему сайту и теме материала — странно, если на сайт про кошек будет ссылаться портал с жалобами жителей на работу ЖКХ;
- наличие ссылок на другие страницы сайта, связанные по теме;
- вхождения ключевого запроса в анкоры ссылок;
- длина контента (возможно, влияет в некоторых случаях) — например, если поисковик понимает, что на этот обширный запрос точно нельзя ответить одним абзацем;
- поведение пользователя на странице — если большинство людей открывает и сразу же закрывает статью, с ней явно что-то не то;
- качество страницы — доступность для пользователей, быстрая загрузка, корректность кодировки и прочие признаки.
Скорее всего, это не полный список. Если вы в теме, дополняйте в комментариях!
Что-то вы можете оценить сами, например, как страница раскрывает тему, отвечает ли на вопрос пользователя. Другие показатели удобно анализировать сервисами. Один такой мы и разберем.
Как проверить качество и релевантность конкретной страницы — онлайн-инструмент
Инструмент для анализа страницы работает бесплатно и анализирует заголовки, мета-теги, текст, ссылки, микроразметку и технические параметры.
Зачем вам это все проверять?
Вы сможете составить список ошибок и передать их специалисту или поработать самим. Это поможет улучшить позиции страницы в выдаче и избавиться от важных проблем. Иногда критически важных, например, когда страница закрыта от поисковых ботов.
Нужно ввести ее URL и основной запрос, для которого создавали статью, он проверит страницу по списку тестов и посчитает баллы. Ошибки в начале списка, чтобы было понятно, почему такая оценка.
По клику на ошибку можно перейти к блоку с конкретными тестами, открыть описание с советами:
Что вообще проверяет инструмент:
Оптимизация заголовков и самого текста
Насколько текст, Title и заголовки страницы релевантны главному запросу, есть ли точные вхождения в заголовки, какие слова встречаются чаще всего, какой длины текст и есть ли ошибки в мета-тегах.
Изображения
Выводит список всех картинок с их адресами, анализирует мета-теги и вхожденя ключевых слов в alt и title. Проверяет, есть ли битые изображения — недоступные для поисковиков и пользователей.
Ссылки
Ищет битые ссылки, которые не откроются у поисковиков и пользователей, составляет список внутренних ссылок (внутри вашего сайта) и внешних (со сторонних сайтов), определяет их тип, статус индексации и показывает анкор.
Технические параметры
Доступна ли страница для ботов поисковых систем, какая кодировка стоит и нет ли с ней ошибок, какая страница указана канонической — основной среди возможных дублей, за сколько времени страница начинает загружаться.
Микроразметка
Есть ли на странице разметка Schema.org и Open Graph, как отображается ссылка благодаря разметке
Ссылка на инструмент, чтобы не листать наверх
Список ошибок поставьте себе в план на исправление или передайте спецу, который этим займется. Можно скинуть ему ссылку на результат проверки, он сам все увидит.
…
Если вам понравился инструмент, поддержите его на Product Hunt, чтобы больше людей о нем узнали 😊
страниц запросов — Business Central
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
Страница запроса — это страница, которая запускается до начала выполнения отчета или XMLport. Страницы запросов позволяют конечным пользователям указывать параметры и фильтры для отчета и XML-порта. Страницы запроса определяются как часть разработки объекта отчета, объекта расширения отчета или объекта XMLport. Синтаксис показан ниже в этой статье. Вы разрабатываете фильтры на страницах запроса, используя следующие свойства отчета и XMLport:
Собственность | Описание |
---|---|
Свойство RequestFilterHeading | Задает заголовок для вкладки страницы запроса, связанной с элементом данных отчета или элементом таблицы XMLport. |
Свойство RequestFilterHeadingML | Задает текст, используемый в качестве свойства RequestFilterHeading для вкладки страницы запроса. |
Свойство RequestFilterFields | Указывает, какие столбцы автоматически включаются на вкладку страницы запроса, связанную с элементом данных отчета или элементом таблицы XMLport. Пользователь может установить фильтры для этих столбцов. |
Примечание
Страницы запроса для XMLports не поддерживаются веб-клиентом Business Central в версиях до Dynamics 365 Business Central 2019 выпуска волны 2. Если вы попытаетесь запустить XMLport со страницей запроса из веб-клиента в этих версии вы получаете сообщение об ошибке, что тип страницы XMLport не поддерживается. Кроме того, страницы запросов XMLport работают в клиенте Dynamics NAV, подключенном к Business Central.
По умолчанию отображается страница запроса, если для UseRequestPage не установлено значение ложь
; то отчет или XMLport начнет печатать сразу после запуска. В этом случае конечные пользователи не могут отменить отчет или запуск XMLport. По-прежнему можно отменить отчет или XMLport, но некоторые страницы могут быть распечатаны.
По умолчанию, без каких-либо настроек, на странице запроса всегда будут отображаться следующие кнопки:
- Отправить на
- Печать
- Предварительный просмотр
- Отменить
Кроме того, на странице запроса можно добавить дополнительные параметры, позволяющие конечному пользователю фильтровать отображаемые данные.
Фильтрация на страницах запроса
Столбцы, определенные вами как RequestFilterFields
, отображаются на странице запроса и могут использоваться для фильтрации данных перед просмотром или печатью отчета.
Примечание
Фильтрация возможна только в клиенте Windows, даже если RequestFilterFields
не задан.
Определение свойства RequestFilterFields
в части dataitem()
кода отчета выполняется, как показано в следующем примере кода:
отчет 50103 "Список клиентов" { CaptionML = ENU = 'Список клиентов'; RDLCLayout = 'Отчет о списке клиентов.rdl'; // если Word использует свойство WordLayout набор данных { элемент данных (Клиент; Клиент) { RequestFilterFields = "№", "Имя поиска", "Группа публикации клиентов"; ...
Примечание
Рекомендуется добавить столбцы, по которым конечные пользователи отчета будут часто устанавливать фильтры.
Дополнительные сведения об объекте отчета см. в разделе Объект отчета.
Определение свойства RequestFilterFields
в части tableelement()
XMLport выполняется аналогичным образом:
XMLport 50104 «Экспорт списка клиентов» { CaptionML = ENU = 'Экспорт списка клиентов'; Направление = Экспорт; схема { текстовый элемент (корень) { XmlName = 'Корень'; элемент таблицы (Клиент; Клиент) { RequestFilterFields = "№", "Имя поиска", "Группа публикации клиентов"; ...
Дополнительные сведения об объекте XMLport см. в разделе Объект XMLport.
По умолчанию для каждого элемента данных в отчете и элемента таблицы в XMLport на странице запроса создается экспресс-вкладка для определения фильтров и сортировки. Чтобы удалить экспресс-вкладку со страницы запроса, не определяйте RequestFilterFields
для элемента данных или элемента таблицы и задайте свойство DataItemTableView в отчете или свойство SourceTableView в XMLport для определения сортировки. Страница запроса отображается, но для этого элемента данных или элемента таблицы нет вкладки.
Если DataItemTableView
или SourceTableView
не определены, то конечные пользователи могут выбрать столбец сортировки и порядок сортировки во время выполнения.
В сложном отчете или XMLport, использующем данные из нескольких таблиц, функциональность может зависеть от определенного ключа и порядка сортировки. Создавайте отчеты и порты XML таким образом, чтобы конечные пользователи не могли изменить порядок сортировки таким образом, чтобы это повлияло на их функциональность.
Для элементов данных и элементов таблицы, исходная таблица которых содержит вычисляемые поля, такие как суммы и количества, Фильтр итогов по: Раздел автоматически включается на страницу запроса, что позволяет настроить различные параметры, влияющие на расчеты.
Совет
Информацию о том, как ввести критерии фильтрации на странице запроса, см. в разделе Фильтрация в справке приложения Business Central.
Определение страницы запроса
раздела
В отчетах помимо определения параметров фильтра путем установки свойства RequestFilterFields
можно добавить requestpage
раздел. В этом разделе вы можете установить для свойства SaveValues значение true
, чтобы сохранить значения, которые конечный пользователь вводит на странице запроса. При повторном запуске отчета конечный пользователь сможет использовать ранее определенные фильтры. Также можно добавить макет
на страницу запроса, указав раздел Options для выполнения проверок.
Примечание
Можно использовать свойство SaveValues
вместе со свойством AllowScheduling, чтобы настроить страницу запроса для поддержки нескольких предварительных просмотров. Когда оба свойства равны true
, пользователи могут просматривать отчет со страницы запроса сколько угодно раз, не закрывая страницу запроса. Эта возможность позволяет пользователям изменять фильтры, видеть, как будет выглядеть сгенерированный отчет, а затем повторять попытку. Если для любого свойства задано значение false , отчет не будет поддерживать несколько предварительных просмотров, и страница запроса будет закрыта, как только пользователь просмотрит отчет. В этом случае страница запроса содержит кнопку Preview и Close вместо кнопки Preview 9.0120 .
... страница запроса { СохранитьЗначения = Истина; макет { область (содержание) { группа(Опции) { Заголовок = «Параметры»; поле(дата публикации;требованиедаты публикации) { ApplicationArea = Basic, Suite; Заголовок = «Дата публикации»; ToolTip = 'Указывает дату публикации счетов, созданных пакетным заданием. Это поле необходимо заполнить.'; } } } } вызвать OnOpenPage() начинать если PostingDateReq = 0D, то PostingDateReq := WorkDate; конец; вар PostingDateReq: Дата; } ...
См. также
Объект отчета
Объект расширения отчета
Объект XMLport
Обзор отчетов
Обзор дизайна отчета
Метод RunRequestPage
Свойство RequestFilterHeading
Свойство RequestFilterHeadingML
Свойство RequestFilterFields
DataItemTableView
Обратная связь
Просмотреть все отзывы о странице
страниц запросов — Dynamics NAV
Твиттер
Фейсбук
Электронная почта
- Статья
Страница запроса — это страница, которая запускается перед началом выполнения отчета. Страницы запросов позволяют конечным пользователям указывать параметры и фильтры для отчета.
Вы проектируете Параметры Экспресс-вкладка страницы запроса с помощью конструктора страниц параметров запроса в среде разработки. Чтобы получить доступ к конструктору страниц параметров запроса, откройте конструктор набора данных отчетов, выберите View , а затем выберите Страница запроса .
Вы разрабатываете фильтры на страницах запроса, используя следующие свойства отчета:
Свойство | Описание |
---|---|
Свойство ReqFilterHeading | Задает заголовок для вкладки страницы запроса, связанной с этим элементом данных. |
Свойство ReqFilterHeadingML | Задает текст, используемый в качестве свойства ReqFilterHeading для вкладки страницы запроса. |
Свойство ReqFilterFields | Устанавливает, какие поля автоматически включаются на вкладке страницы запроса, связанной с этим элементом данных. Пользователь может установить фильтры для этих полей. |
Помимо указания параметров и фильтров, пользователи могут выбирать из следующих действий на странице запроса:
Печать
Предварительный просмотр
Отмена
Справка
Фильтрация на страницах запроса
Поля, определенные вами как ReqFilterFields , отображаются на странице запроса. Кроме того, конечный пользователь может добавить дополнительные поля для фильтрации на страницу запроса.
Примечание
Мы рекомендуем вам добавить поля, по которым конечные пользователи отчета будут часто устанавливать фильтры.
По умолчанию для каждого элемента данных в отчете на странице запроса создается экспресс-вкладка для определения фильтров и сортировки. Чтобы удалить экспресс-вкладку со страницы запроса, не определяйте ReqFilterFields для элемента данных и задайте свойство DataItemTableView для определения сортировки. Страница запроса отображается, но для этого элемента данных нет вкладки.
Если DataItemTableView не определен, то конечные пользователи могут выбрать поле сортировки и порядок сортировки во время выполнения.
Если установить для UseReqPage значение Нет , то отчет начнет печатать сразу после запуска. В этом случае конечные пользователи не могут отменить выполнение отчета. Отчет по-прежнему можно отменить, но некоторые страницы могут быть распечатаны.
В сложном отчете, в котором используются данные из нескольких таблиц, функциональность может зависеть от определенного ключа и порядка сортировки. Создавайте отчеты таким образом, чтобы конечные пользователи не могли изменить порядок сортировки таким образом, чтобы это повлияло на функциональность отчета.