Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 40852|Odpoveď: 0

[ASP.NET] Hlavičky požiadaviek Ocelot musia obsahovať iba ASCII znaky

[Kopírovať odkaz]
Zverejnené 10. 5. 2021 15:24:29 | | | |
Revízia:

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


Keď spustíte ocelot gateway, pre prístupové rozhranie sa zobrazí nasledujúca chyba:
Kód stavu: 502; Zlá brána                                                                                                                                                                                                                                                                                                                                                                                                                      
Projekt je ASP.NET Core 3.1,Verzia používaná Ocelotom je 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: žiadny predchádzajúci request id, správa: EndpointRateLimiting nie je povolený pre /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no prior request id, správa: Error Code: ConnectionToDownstreamServiceError Message: Error connect to downstream service, výnimka: System.Net.Http.HttpRequestException: Hlavičky požiadaviek musia obsahovať iba ASCII znaky.
         at System.Net.Http.HttpConnection.WriteStringAsync(String s)
         at System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders headers, String cookiesFromContainer)
         at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, 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)
         at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         na Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) chyby nájdené v ResponderMiddleware. Nastavenie chybovej odpovede pre cestu požiadavky:/test1/home/index, metóda požiadavky: GET
Pomocou Fiddlera na zachytávanie balíčkov som zistil, že cookie má čínsky reťazec, a to nasledovne:




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


Prehliadač napíše cookie kód (Nasledujúca kódová hodnota nie je uniknutá) dokáže reprodukovať problém:

Konzola prehliadača zapisuje cookies
https://www.itsvse.com/thread-4682-1-1.html
Skúste vyprázdniť cache cookies a brána sa vráti do normálu, ako je znázornené na obrázku nižšie:



Poradie vykonávania middleware s Ocelotom je nasledovné:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AutentifikáciaMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Koniec)




Predchádzajúci:ASP.NET Core dostáva požiadavku na plnú URL linku
Budúci:Výkonnostný test Redis Benchmark
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com