Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 12906|Odpowiedź: 1

Nagłówek HTTP request Expect jest szczegółowo wyjaśniony

[Skopiuj link]
Opublikowano 22.04.2021 15:32:09 | | |
Wprowadzenie do dokumentu:Logowanie do linku jest widoczne.

Podczas wywoływania interfejsu drugiej strony przez curl okazało się, że zjawisko timeoutu jest bardzo poważne, więc zapytałem osobę od interfejsu drugiej strony, a druga strona powiedziała, że trzeba dodać:


Po dodaniu odkryłem, że naprawdę dobrze działa, więc zacząłem badać sposób, w jaki go używać. Używając curl dla POST, gdy "dane POST są większe niż 1024 bajty", curl nie inicjuje bezpośrednio żądania POST, lecz jest podzielony na 2 kroki:

Expect: 100-continue

1. Wysłać żądanie zawierające kontynuację Expect:100, prosząc serwer o zaakceptowanie danych

2. Po otrzymaniu odpowiedzi 100-continue zwróconej przez Serwer, dane są POSTowane na Serwerze

Ale jest z tym kilka problemów:

Nie wszystkie serwery poprawnie reagują na 100-continue, np. lighttpd, który zwraca 417 Expectation Failed.

powodujące opóźnienie,Gdy klient wysyła pierwsze Expect:100-continue, musi poczekać na odpowiedź serwera, zanim wyśle ciało żądania

Jeśli jesteś pewien, że serwer drugiej strony nie odrzuci żądań POST o objętości większej niż 1024 bajty, możesz uniknąć tej metody i uniknąć dwóch wspomnianych wcześniej skutków ubocznych, a rozwiązaniem jest to wspomniane na początku artykułu.

Około 100 sztuk nadal

Celem tego jest:

Pozwala klientowi ocenić, czy serwer jest gotów przyjąć dane żądania przed ich wysłaniem, a jeśli serwer jest gotów je przyjąć, klient faktycznie je wyśle.

Zachowanie klienta:

Klient, który wysyła 100 kontynuacji, nie powinien czekać wiecznie na odpowiedź od serwera, a po pewnym czasie klient powinien wysłać jednostkę bezpośrednio.

Zachowanie po stronie serwera:

Jeśli serwer otrzyma żądanie 100 kontynuacji, odpowie 100 kontynuacją lub wyśle kod błędu. Serwer nigdy nie może wysłać 100 kontynuacji do klienta, który nie wysyła 100 kontynuacji. Ale niektóre serwery tak. IIS 5 błędnie wysyła odpowiedź 100-kontynuuj

Jeśli serwer otrzyma ciało klienta przed wysłaniem odpowiedzi 100 kontynuuj, oznacza to, że klient zdecydował się rozpocząć wysyłanie danych, więc serwer nie może już wysłać 100 kontynuacji do klienta.
Kod ustawień .NET Expect Off Expect wygląda następująco:

RestSharp jest skonfigurowany następująco:







Poprzedni:Różnica między utf8 a utf8mb4 w MySQL
Następny:SignalR dodaje wsparcie dla zdalnego dostępu międzydomenowego
 Ziemianin| Opublikowano 06.04.2025 21:52:04 |
Metoda zamykania HttpClient


lub

Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com