Яка максимальна довжина запиту HTTP GET ?
Чи визначена помилка відповіді, яку сервер може / повинен повернути, якщо отримає GET-запит, що перевищує цю довжину?
Це в контексті API веб-сервісу, хоча і цікаво бачити обмеження браузера.
Яка максимальна довжина запиту HTTP GET ?
Чи визначена помилка відповіді, яку сервер може / повинен повернути, якщо отримає GET-запит, що перевищує цю довжину?
Це в контексті API веб-сервісу, хоча і цікаво бачити обмеження браузера.
Відповіді:
Ліміт залежить від використовуваного сервера та клієнта (і, якщо застосовно, також і проксі-сервера, який використовується сервером або клієнтом).
Більшість веб-серверів мають обмеження 8192 байт (8 Кб), що зазвичай можна налаштувати десь у конфігурації сервера. Що стосується питання клієнта, специфікація HTTP 1.1 навіть попереджає про це. Ось уривок глави 3.2.1 :
Примітка. Сервери повинні бути обережними щодо залежно від довжини URI вище 255 байт, оскільки деякі старі клієнтські або проксі-сервіси можуть не підтримувати ці довжини належним чином.
Обмеження в Internet Explorer і Safari - близько 2 Кб, в Opera близько 4 КБ, а в Firefox - близько 8 Кб. Таким чином, ми можемо припустити, що 8 КБ - це максимально можлива довжина, і що 2 Кбайт - це більш доступна довжина, на яку слід покладатися на стороні сервера, і що 255 байт - це найбезпечніша довжина, щоб припустити, що вся URL-адреса надійде.
Якщо ліміт буде перевищено або в браузері, або на сервері, більшість просто вріже символи за межами цього обмеження без будь-якого попередження. Однак деякі сервери можуть надсилати помилку HTTP 414 . Якщо вам потрібно надіслати великі дані, то краще використовувати POST замість GET. Його межа набагато вищий, але більше залежить від використовуваного сервера, ніж клієнт. Зазвичай середній веб-сервер дозволяє до 2 ГБ. Це також можна налаштувати десь у налаштуваннях сервера. Середній сервер відображатиме специфічну для сервера помилку / виняток при перевищенні межі POST, як правило, як помилка HTTP 500.
Ви задаєте тут два окремих питання:
Яка максимальна довжина запиту HTTP GET?
Як вже було сказано, сам HTTP не накладає жодного жорстко обмеженого обмеження на довжину запиту; але браузери мають обмеження від 2 Кб - 8 КБ (255 байт, якщо рахувати дуже старі браузери).
Чи визначена помилка відповіді, яку сервер може / повинен повернути, якщо він отримує GET-запит, що перевищує цю довжину?
Це той, кому ніхто не відповів.
HTTP 1.1 визначає код статусу 414 Request-URI Too Long
для випадків, коли досягається визначений сервером ліміт. Детальнішу інформацію про RFC 2616 можна переглянути .
У випадку встановлених клієнтом лімітів немає сенсу, коли сервер щось повертає, оскільки сервер взагалі не отримає запит.
Ліміти веб-переглядача:
Browser Address bar document.location
or anchor tag
---------------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
Internet Explorer 11 2047 5120
Edge 16 2047 10240
Хочу більше? Дивіться це запитання на "Переповнення стека" .
Подібне питання тут: чи існує обмеження тривалості запиту GET?
Я потрапив на ліміт і на своєму спільному хостинг-акаунті, але браузер повернув порожню сторінку, перш ніж потрапити на сервер, я думаю.
Як вже було сказано, сам HTTP не накладає жодного жорстко обмеженого обмеження на довжину запиту; але браузери мають обмеження від 2048 символів, дозволених методом GET.
Так. У запиті GET немає жодних обмежень.
Я можу надіслати ~ 4000 символів як частину рядка запиту, використовуючи як браузер Chrome, так і команду curl.
Я використовую сервер Tomcat 8.x, який повернув очікувану відповідь 200 ОК.
Ось знімок екрана HTTP-запиту Google Chrome (приховування кінцевої точки, яку я намагався з міркувань безпеки):
ВІДПОВІДЬ