Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 40852|Svar: 0

[ASP.NET] Ocelot Request-headere må kun indeholde ASCII-tegn

[Kopier link]
Opslået på 10/05/2021 15.24.29 | | | |
Anmeldelse:

Ocelot Series (1) ASP.NET Core Gateway i praksis
https://www.itsvse.com/thread-9284-1-1.html


Når du starter ocelot-gatewayen, rapporteres følgende fejl for adgangsgrænsefladen:
Statuskode: 502; Dårlig Gateway                                                                                                                                                                                                                                                                                                                                                                                                                      
Projektet er ASP.NET Core 3.1,Den version, som Ocelot bruger, er 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no prior request id, besked: EndpointRateLimiting er ikke aktiveret for /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: ingen tidligere anmodnings-id, besked: Fejlkode: ConnectionToDownstreamServiceFejlmeddelelse: Fejlforbindelse til nedstrøms service, undtagelse: System.Net.Http.HttpRequestException: Anmodningsheadere må kun indeholde ASCII-tegn.
         på System.Net.Http.HttpConnection.WriteStringAsync(String s)
         på System.Net.Http.Http.HttpConnection.WriteHeadersAsync(HttpHeaders-headers, String cookiesFromContainer)
         på System.Net.Http.Http.HttpConnection.SendAsyncCore(HttpRequestMessage-anmodning, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         på System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, boolean disposeCts)
         på Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) fejl fundet i ResponderMiddleware. Opsætning af fejlsvar for anmodningssti:/test1/home/index, anmodningsmetode: GET
Ved at bruge Fiddler til at fange pakker som følger, fandt jeg ud af, at cookien har en kinesisk streng, som følger:




Host: localhost:5002
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: aaa=测试


Browseren skriver en cookiekode (Følgende kodeværdi undslippes ikke) kan genskabe problemet:

Browserkonsollen skriver cookies
https://www.itsvse.com/thread-4682-1-1.html
Prøv at tømme cookie-cachen, og gatewayen vender tilbage til normal, som vist på billedet nedenfor:



Rækkefølgen for udførelsen af middleware med Ocelot er som følger:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Slut)




Tidligere:ASP.NET Core modtager anmodningen om fuld URL-link
Næste:Redis Benchmark ydelsestest
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com