Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 12455|Відповідь: 1

Заголовок HTTP-запиту Expect детально пояснюється

[Копіювати посилання]
Опубліковано 2021-4-22 15:32:09 | | |
Вступ до документа:Вхід за гіперпосиланням видно.

Коли я викликав інтерфейс іншої сторони через curl, виявилося, що явище тайм-ауту дуже серйозне, тому я запитав інтерфейсника іншої сторони, і інша сторона сказала, що потрібно додати:


Після додавання я зрозумів, що він справді добре працює, тому почав досліджувати, як ним користуватися. При використанні curl для POST, коли «дані POST перевищують 1024 байти», curl не ініціює безпосередньо запит POST, а буде поділений на 2 кроки:

Expect: 100-continue

1. Надіслати запит із Expect:100-continue, просячи сервер прийняти ці дані

2. Після отримання відповіді на 100 продовжень, поверненої сервером, дані надсилаються на сервер

Але тут є кілька проблем:

Не всі сервери коректно реагують на 100-continue, наприклад lighttpd, який поверне 417 Очікування не виконано.

спричиняючи затримку,Коли клієнт надсилає перше Expect:100-continue, потрібно чекати відповіді сервера, перш ніж надіслати тіло запиту

Якщо ви впевнені, що сервер іншої сторони не відхилить POST-запити обсягом понад 1024 байт, ви можете уникнути цього методу і уникнути двох згаданих побічних ефектів, а рішенням є те, що згадується на початку статті.

Близько 100 продовжують

Мета цього полягає в наступному:

Це дозволяє клієнту оцінити, чи готовий сервер прийняти дані запиту перед відправкою, і якщо сервер готовий їх прийняти, клієнт фактично надішле ці дані.

Поведінка клієнтів:

Клієнт, який надсилає 100 продовження, не повинен вічно чекати відповіді від сервера, і після певного тайм-ауту клієнт повинен надіслати цю особу безпосередньо.

Поведінка на стороні сервера:

Якщо сервер отримує запит 100 continue, він відповість 100 continue або надішле код помилки. Сервер ніколи не може надіслати 100 продовження клієнту, який не надсилає 100 продовження. Але деякі сервери це роблять. IIS 5 неправильно надсилає відповідь 100-продовження

Якщо сервер отримує тіло клієнта до відправлення відповіді 100 продовження, це означає, що клієнт вирішив почати надсилати дані, тому сервер більше не може надіслати 100 продовження клієнту.
Код налаштування .NET Expect Off Expect виглядає так:

RestSharp налаштований так:







Попередній:Різниця між utf8 і utf8mb4 у MySQL
Наступний:SignalR додає підтримку міждоменного доступу для віддаленого доступу
 Орендодавець| Опубліковано 2025-4-6 21:52:04 |
Метод закриття HttpClient


або

Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com