Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 40852|Válasz: 0

[ASP.NET] Az Ocelot Request fejléceinek csak ASCII karaktereket kell tartalmaznia

[Linket másol]
Közzétéve 2021. 05. 10. 15:24:29 | | | |
Szemle:

Ocelot sorozat (1) ASP.NET Core Gateway gyakorlatban
https://www.itsvse.com/thread-9284-1-1.html


Amikor elindítod az ocelot átjárót, a következő hibát jelentik a hozzáférési felületen:
Állapotkód: 502; Rossz kapu                                                                                                                                                                                                                                                                                                                                                                                                                      
A projekt ASP.NET Core 3.1,Az Ocelot által használt verzió a 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: nincs korábbi kérésazonosító, üzenet: EndpointRateLimiting nem engedélyezve /{url} esetén
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: nincs korábbi request id, üzenet: Error Code: ConnectionToDownstreamServiceError Message: Error csatlakozás a downstream szolgáltatáshoz, kivétel: System.Net.Http.Http.RequestException: A kérés fejléceinek csak ASCII karaktereket kell tartalmaznia.
         a System.Net.Http.Http.HttpConnection.WriteStringAsync(String s) címen
         at System.Net.Http.Http.HttpConnection.WriteHeadersAsync(HttpHeaders headers, String cookiesFromContainer)
         at System.Net.Http.Http.Connection.SendAsyncCore (HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.Http.ConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.Http.Client.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         az Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) hibák találhatók a ResponderMiddleware-ben. Hibaválasz beállítása a kérés útvonalához:/test1/home/index, kérés módszere: GET
A Fiddlerrel a következő csomagok elfogására találtam, hogy a süti kínai zsinórral rendelkezik, a következőkép:




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


A böngésző süti kódot ír (A következő kódérték nem kerül ki.) reprodukálhatja a problémát:

Böngésző konzol sütikeket ír
https://www.itsvse.com/thread-4682-1-1.html
Próbáld meg kiüríteni a cookie cache-t, és a gateway visszatér normál állapotba, ahogy az alábbi képen is látható:



A middleware végrehajtásának sorrendje Ocelottal a következő:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Vége)




Előző:ASP.NET Core megkapja a teljes URL-hivatkozást
Következő:Redis Benchmark teljesítményteszt
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com