Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 12455|Răspunde: 1

Antetul cererii HTTP Expect este explicat în detaliu

[Copiază linkul]
Postat la 2021-4-22 15:32:09 | | |
Introducere în document:Autentificarea cu hyperlink este vizibilă.

Când am apelat interfața celeilalte părți prin curl, s-a constatat că fenomenul timeout-ului era foarte grav, așa că am întrebat persoana de interfață a celeilalte părți, iar cealaltă parte a spus că este necesar să adaugi:


După ce am adăugat-o, am descoperit că funcționează foarte bine, așa că am cercetat cum să o folosesc. Când se folosește curl pentru POST, când "datele POST sunt mai mari de 1024 bytes", curl nu va iniția direct o cerere POST, ci va fi împărțit în 2 pași:

Expect: 100-continue

1. Trimiteți o cerere care conține un Aștept:100-continue, cerând serverului să accepte datele

2. După primirea răspunsului de 100 de continue returnat de Server, datele sunt POSTate către Server

Dar există mai multe probleme cu acest lucru:

Nu toate serverele vor răspunde corect la 100-continue, de exemplu lighttpd, care va returna 417 Expectation Failed.

cauzând întârziere,Când clientul trimite primul Expect:100-continue, trebuie să aștepte răspunsul serverului înainte de a trimite corpul cererii

Dacă sunteți sigur că serverul celeilalte părți nu va respinge cererile POST de mai mult de 1024 octeți, puteți evita această metodă și cele două efecte secundare menționate mai sus, iar soluția este cea menționată la începutul articolului.

Aproximativ 100 continuă

Scopul acesteia este:

Aceasta permite clientului să judece dacă serverul este dispus să primească datele solicitate înainte de a le trimite, iar dacă serverul este dispus să le primească, clientul va trimite efectiv datele.

Comportamentul clientului:

Un client care trimite 100 de continue nu ar trebui să aștepte la nesfârșit un răspuns de la server, iar după o perioadă de timeout, clientul ar trebui să trimită entitatea direct.

Comportamentul pe partea serverului:

Dacă serverul primește o cerere de 100 de continuare, va răspunde cu 100 de continue sau va trimite un cod de eroare. Serverul nu poate trimite niciodată 100 de continuare către un client care nu trimite 100 de continuare. Dar unele servere o fac. IIS 5 trimite greșit răspunsul 100-continue

Dacă serverul primește corpul clientului înainte de a trimite răspunsul 100 continue, înseamnă că clientul a decis să înceapă să trimită date, deci serverul nu mai poate trimite 100 continue clientului.
Codul pentru setările .NET Expect Off Expect este următorul:

RestSharp este configurat astfel:







Precedent:Diferența dintre utf8 și utf8mb4 în MySQL
Următor:SignalR adaugă suport cross-domain pentru acces la distanță
 Proprietarul| Postat pe 2025-4-6 21:52:04 |
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com