Профиль: Аноним (вход | регистрация) не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 обязательно


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

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

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

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

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

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

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

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

  • 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-ем...
     

  • 1.9, Аноним (11), 10:26, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Стало хуже.
     
  • 1.14, Аноним (16), 10:42, 18/06/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.18, Аноним (18), 10:48, 18/06/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    QUERY энтерпрайзно. Изживают потихонечку хакерскую культуру, выдавливают по капле.
     

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



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

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