Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 40852|Svar: 0

[ASP.NET] Ocelot Request-headers får endast innehålla ASCII-tecken

[Kopiera länk]
Publicerad på 2021-05-10 15:24:29 | | | |
Recension:

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


När du startar ocelot-gatewayen rapporteras följande fel för åtkomstgränssnittet:
Statuskod: 502; Dålig Gateway                                                                                                                                                                                                                                                                                                                                                                                                                      
Projektet är ASP.NET Core 3.1,Versionen som används av Ocelot är 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no prior request id, meddelande: EndpointRateLimiting är inte aktiverat för /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no prior request id, message: Felkod: ConnectionToDownstreamServiceFelmeddelande: Fel anslutning till nedströms tjänst, undantag: System.Net.Http.HttpRequestException: Request-headers får endast innehålla ASCII-tecken.
         på System.Net.Http.HttpConnection.WriteStringAsync(String s)
         på System.Net.Http.Http.Connection.WriteHeadersAsync(HttpHeaders-headers, String cookiesFromContainer)
         på System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage-begäran, CancellationToken cancellationToken)
         på System.Net.Http.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnectionconnection, HttpRequestMessage-förfrågan, Boolean doRequestAuth, CancellationToken cancelToken)
         på System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage-begäran, Boolean doRequestAuth, CancellationToken cancellationToken)
         på System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage-begäran, CancellationToken cancellationToken)
         på System.Net.Http.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         på Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext) httpContext) fel som hittas i ResponderMiddleware. Sätter felsvar för förfrågningsväg:/test1/home/index, förfrågningsmetod: GET
Genom att använda Fiddler för att fånga paket enligt följande upptäckte jag att kakan har en kinesisk sträng, enligt följande:




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=测试


Webbläsaren skriver en cookiekod (Följande kodvärde undgår inte) kan återskapa problemet:

Webbläsarkonsolen skriver cookies
https://www.itsvse.com/thread-4682-1-1.html
Försök att tömma cookiecachen så återgår gatewayen till normalt som visas på bilden nedan:



Utföringsordningen för middleware med Ocelot är följande:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Slut)




Föregående:ASP.NET Core får länken till förfrågan om full URL
Nästa:Redis Benchmark prestandatest
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com