Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Стандартизирован HTTP-метод QUERY, комбинирующий возможности GET и POST

18.06.2026 08:48 (MSK)

Инженерный комитет IETF (Internet Engineering Task Force), занимающегося развитием протоколов и архитектуры сети Интернет, придал HTTP-методу QUERY статус "Предложенного стандарта" и опубликовал связанную с ним спецификацию RFC 10008. Метод QUERY по способу отправки данных на сервер повторяет метод POST, но отличается от него ориентацией не на запись данных и изменение состояния, а на формирование запросов на чтение.

По решаемым задачам новый метод близок к GET и позволят отправлять запросы, которые могут быть повторены или перезапущены без изменения состояния на сервере. Как и в методе POST параметры запроса в QUERY передаются не в URI, а в теле запроса. Подобный подход даёт возможность передавать большой объём параметров в запросе, превышающий лимит на размер параметров в методе GET (8000 байт).


   GET /feed?q=foo&limit=10&sort=-published HTTP/1.1
   Host: example.org

   QUERY /feed HTTP/1.1
   Host: example.org
   Content-Type: application/x-www-form-urlencoded

   q=foo&limit=10&sort=-published

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

Среди областей применения метода QUERY упоминается отправка запросов к Web API, выдающих результат в формате JSON или XML, или бэкендам, генерирующим контент. Для определения возможности использования нового метода при обращении к серверу предлагается использовать метод OPTIONS, а для определения поддерживаемых форматов метод HEAD:


   > OPTIONS /contacts HTTP/1.1
   > Host: example.org

   HTTP/1.1 200 OK
   Allow: GET, QUERY, OPTIONS, HEAD

В методе QUERY предусмотрена поддержка кэширования - прокси-серверы или обработчики могут сохранить результат выполнения запроса, присвоить ему URI для последующего обращения через метод GET и вернуть информацию о выдаче прокэшированной версии через заголовок "Last-Modified". Для проверки наличия изменений с прошлого запроса может применяться заголовок "If-Modified-Since". Для указания альтернативных вариантов выполнения запроса в ответе могут указываться заголовки "Content-Location" и "Location", отличия которых в том, что первый передаёт ссылку для получения результата ранее выполненного запроса, а второй предназначен для повторения запроса с теми же параметрами.


   > QUERY /contacts HTTP/1.1
   > Host: example.org
   > Content-Type: application/x-www-form-urlencoded
   > Accept: application/json
   > select=surname,givenname,email&limit=10&match=%22email=*@example.*%22

   HTTP/1.1 200 OK
   Content-Type: application/json
   Content-Location: /contacts/stored-results/17
   Location: /contacts/stored-queries/42
   Last-Modified: Sat, 25 Aug 2012 23:34:45 GMT
   Date: Sun, 17 Nov 2024, 16:10:24 GMT

   > GET /contacts/stored-results/17 HTTP/1.1
   > Host: example.org
   > Accept: application/json

Помимо типа "application/x-www-form-urlencoded" для передачи параметров в запросах QUERY также могут напрямую использоваться расширенные форматы, такие как JSONPath (application/jsonpath), XSLT (application/xslt+xml) и SQL (application/sql). Поддерживаемые форматы возвращаются сервером в заголовке Accept-Query.


   > HEAD /contacts HTTP/1.1
   > Host: example.org

   HTTP/1.1 200 OK
   Content-Type: application/xhtml
   Accept-Query: application/x-www-form-urlencoded, application/jsonpath, application/sql

   > QUERY /errata.json HTTP/1.1
   > Host: example.org
   > Content-Type: application/jsonpath
   > Accept: application/json
   >
   > $..[
   >     ?@.errata_status_code=="Rejected"
   >     && @.submit_date>"2024"
   >   ]
   >   ["doc-id"]


  1. Главная ссылка к новости (https://mailarchive.ietf.org/a...)
  2. OpenNews: Впервые за 15 лет обновлена спецификация протокола HTTP/1.1
  3. OpenNews: Протокол HSTS получил статус предложенного стандарта
  4. OpenNews: HTTP/2.0 получил статус предложенного стандарта
  5. OpenNews: Протокол HTTP/3.0 получил статус предложенного стандарта
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65713-http
Ключевые слова: http
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:36, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    И так браузеры еле работают, простое открытие хрома, файрфокса, браве без отображения страниц запускает по 25-30 процессов, жрет память и процессор...
     
     
  • 2.7, q (ok), 10:21, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Обнови комп. Удали нескучные расширения. Закрой миллиард вкладок, которые накопились на 20 лет бравзинга (я же знаю, что ты их не закрываешь - видел у тебя на скринах, от табов только узенькие полоски, на которые даже кнопка закрытия вкладки не умещается).
     
     
  • 3.11, Аноним (11), 10:27, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Почикать совместимость с целыми поколениями железа. Это конечно сильно.
     
  • 3.17, анон (?), 10:44, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Обнови комп. Удали нескучные расширения. Закрой миллиард вкладок, которые накопились на 20 лет бравзинга. Выбери жизнь. Выбери работу. Выбери карьеру. Выбери семью. Выбери телевизор с большим экраном. Выбери стиральную машину, музыкальный центр, автомобиль и электрический консервный нож. Выбери здоровый желудок, зубы и медицинскую страховку. Выбери недвижимость и аккуратно выплачивай взносы. Выбери свой первый дом. Выбери друзей. Выбери курорты и шикарные чемоданы. Выбери костюм-тройку в самой лучшей фирме из самой дорогой материи. В свой выходной выбери диван, чтобы развалиться и смотреть отупляющее шоу. Набивай брюхо всякой всячиной. Выбери загнивание, в конце концов, и со стыдом вспомни подонков, которых ты заложил, чтобы выбраться самому. Выбери своё будущее. Выбери жизнь.
     
     
  • 4.26, Жироватт (ok), 11:02, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Обнови комп. Удали нескучные расширения. Закрой миллиард вкладок, которые накопились на 20 лет бравзинга. Выбери жизнь. Выбери работу. Выбери карьеру. Выбери семью. Выбери смарт-телек на ведроиде с большим, полутораметровым экраном. Выбери робота-пылесоса, голосового ассистента-в-колонке, электромобиль-Теслу и очередной сверхполезный гаджет с Алиэкспресс. Выбери здоровый желудок, зубы и ДМС. Выбери квартиру-апартаменты внутри МКАДа и аккуратно выплачивай ипотеку. Выбери свою первую дачу. Выбери друзей. Выбери сказочное_бали, Хайнань и невскрываемые бронированные чемоданы. Выбери мешковатый костюм от самой дизайнерской фирмочки МСК из самой дорогой, хотя бы без примесей полиэстера и вискозы, материи. В свой выходной выбери диван, чтобы развалиться и смотреть отупляющие видосы с ю- и рутуба. Набивай брюхо всякой дешёвой и илитной всячиной. Выбери загнивание, в конце концов, и со стыдом вспомни подонков, которых ты заложил, чтобы выбраться самому. Выбери своё будущее. Выбери жизнь.

    Адаптировать надо, адаптировать.
    Текст актуален для Штатов 90х-00х, но уже не для СНГ второй половины 20х.

     
  • 2.15, aname (ok), 10:42, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А поддерживаемые методы тут причём?
     

  • 1.2, Аноним (2), 09:53, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    https://xkcd.com/927/

    Раньше разработчики срались из-за организации поиска на POST вместо GET когда надо изобразить что-то сложное.
    Теперь будут сраться в выборе из 3 методов, великолепно.

     
     
  • 2.5, 1 (??), 10:04, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нормик - как раз для "плутания" надо не меньше 3 "сосен". Больше - лучше !
     

  • 1.3, Хрю (?), 09:57, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >метод POST, но отличается от него ориентацией не на запись данных и изменение состояния,

    С какого времени пост стал ориентированным на запись и изменение состояния? Пост это пост, какой смысл ему веб. Сервер придаст такой и будет у него смысл. У меня пост readonly, а для изменения есть put, patch, delete.

     
     
  • 2.8, Аноним (8), 10:25, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    По классике пост для создания, пут для изменения, патч для изменения части, делит для удаления. И гет для получения
     
     
  • 3.12, Хрю (?), 10:39, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Этому уже очень давно мало кто следует ибо это сильно узко и не удобно. Для современных браузеров и веб. серверов это просто слова, возможно, с небольшими настройками по умолчанию, для легаси. Но так хоть гет делай для изменений, хоть делете кешируемый всё это будет работать.
     
  • 2.24, qrKot (?), 10:59, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> С какого времени пост стал ориентированным на запись и изменение состояния?

    Собственно, всегда был. Ну, точнее, немного не так.
    В этих ваших интернетах больше роляет ИДЕМПОТЕНТНОСТЬ запроса. И вот GET (бай дизайн) - идемпотентный (т.е. его можно безопасно закешировать, что важно, с учетом ограниченности, например, пропускной способности этих ваших интернетов). Т.е. GET дает гарантию, что два-десять-стопицот одинаковых запросов подряд по результату не будут отличаться от одного запроса.
    POST же - ровно тот же GET, только без всяких гарантий. У него нет гарантий идемпотентности, что по сути говорит о том, что состояние он в любой момент поменять может.

     

  • 1.4, Аноним (4), 10:03, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А кто вам запрещает в GET вставлять ненулевое тело? HTTP это не запрещает, да и я так делал и делаю
     
     
  • 2.10, фф (?), 10:26, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    а кто запрещает не изменять данные по POST запросу (если логика подразумевает лишь выдачу информации)? или может кто-то запрещает кешировать ответ на такой запрос?
    Почему тогда уж не сделать один универсальный метод запроса, а в заголовках указывать - можно ли кешировать, можно ли писать в логи итп.
     
  • 2.16, Аноним (16), 10:44, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Вставлять никто не запрещает :) Но стандартный сервер может просто отбросить всё после хэдера и будет прав.
     
     
  • 3.31, Dmitry (??), 11:07, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Стандартный сервер это какой? Как я напишу, так и будет
     
  • 2.20, Аноним (20), 10:50, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, причем сразу multipart/form-data, чтобы вообще )))
     

  • 1.6, вымя (?), 10:04, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И, эээээ, чем это отличается от PUT?
     
     
  • 2.13, Жироватт (ok), 10:41, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ...Но другая группа в IETF нашла в PUT фатальный недостаток - его писали не они! Для решения этой проблемы они создали QUERY (похожее на PUT, но другое), и я наивно вспоминаю докладчика на IETF-овской конференции, говорящего, что скоро все хттп-запросы будуи ходить исключительно как QUERY через QUIC, и каждая обёртка над серверным API на экране будет исключительно QUERY-ем...
     
     
  • 3.19, Аноним (19), 10:49, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И чем же это будет отличаться от текущего балагана, кроме того что его просто узаконят и подметут в помойку бесконечно растущих хедеров?
     
     
  • 4.21, Жироватт (ok), 10:54, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ничем.  "xckd - 15й стандарт".
    Но с другой стороны - зря что ли инженегры зарплату в этих комитетах получают? Нужно рожать Новый&УлуДшенный стандарт даже через "не могу", иначе кто заметит усилий.
     
  • 2.30, Аноним (30), 11:06, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это GET-овый PUT, как будто бы.
     

  • 1.9, Аноним (11), 10:26, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Стало хуже.
     
     
  • 2.27, LaunchWiskey (ok), 11:03, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Раньше было лучше!
     

  • 1.14, Аноним (16), 10:42, 18/06/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     
  • 1.18, Аноним (20), 10:48, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    QUERY энтерпрайзно. Изживают потихонечку хакерскую культуру, выдавливают по капле.
     
  • 1.22, localhostadmin (ok), 10:56, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я не совсем понял. Че  оно отличается от обычного POST? В чем проблема принимать POST запросы и обрабатывать их как QUERY?
     
     
  • 2.29, Жироватт (ok), 11:06, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Стандарты мутятся - лавэшка (на миграциях, переписывании и доработках) крутится.
    А потом отключат и GET, и POST для защиты детей от Ынтернета^W^W^W^W безопасности парсеров от хакеров и всё. Будет тебе кури вместо 2х типов запросов
     
  • 2.32, Аноним (32), 11:10, 18/06/2026 [^] [^^] [^^^] [ответить]  
  • +/
    POST - семантически про изменение данных. Query/get - про чтение данных, ожидая, что состояние запрашиваемых данных от этого запроса не изменится.
     

  • 1.23, Соль земли2 (?), 10:58, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > даёт возможность скрыть конфиденциальные данные из логов прокси-серверов

    Решение проблемы через Ж, вместо нормальной настройки прокси.

     
  • 1.25, IdeaFix (ok), 11:00, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пару дней назад попросил безопасника открыть 43 порт, ну надо мне было whois чтобы банить автономками. Готовая скриптовая оснастка уже была, и в других местах она работала, а тут 43 закрыт.

    Безопасник сказал - у ripe есть rest api, перепиши свои скрипты под https и не нужен тебе 43 порт. Я конечно сказал что скоро мы и пинговать будем по rest api через https, но пошел переписывать скрипты.

    А тут вон оно чо... http query.

     
  • 1.28, Аноним (32), 11:04, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Подобный подход даёт возможность передавать большой объём параметров в запросе, превышающий лимит на размер параметров в методе GET (8000 байт).

    Никто и ничто не мешает передавать параметры запроса точно также как в посте - через тело гета. Спека это разрешает. Люди этим пользуются.

    Единственный "бонус" от появления query - явно описанная семантика в отличие от гета, но так себе. Функционально оно ничего не меняет.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру