Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 40852|Antwort: 0

[ASP.NET] Ocelot Request-Header dürfen nur ASCII-Zeichen enthalten

[Link kopieren]
Veröffentlicht am 10.05.2021 15:24:29 | | | |
Rezension:

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


Beim Start des Ocelot-Gateways wird folgender Fehler für die Zugriffsschnittstelle gemeldet:
Statuscode: 502; Schlechtes Tor                                                                                                                                                                                                                                                                                                                                                                                                                      
Das Projekt ist ASP.NET Core 3.1,Die von Ocelot verwendete Version ist 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: no previous request id, message: EndpointRateLimiting ist nicht aktiviert für /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: keine vorherige Anfrage-ID, Meldung: Fehlercode: ConnectionToDownstreamServiceFehlermeldung: Fehler Verbindung zum Downstream-Dienst, Ausnahme: System.Net.Http.Http.RequestException: Anfrage-Header dürfen nur ASCII-Zeichen enthalten.
         bei System.Net.Http.HttpConnection.WriteStringAsync(String s)
         bei System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders-Headers, String-cookiesFromContainer)
         bei System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage-Anfrage, CancellationToken cancellationToken)
         bei System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection-Verbindung, HttpRequestMessage-Anfrage, Boolean doRequestAuth, CancellationToken cancellationToken)
         bei System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage-Anfrage, Boolean doRequestAuth, CancellationToken cancellationToken)
         bei System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         bei System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         bei Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) Fehler, die in ResponderMiddleware gefunden werden. Einstellung der Fehlerantwort für Anfragepfad:/test1/home/index, Anfragemethode: GET
Mit Fiddler, um Päckchen wie folgt zu fangen, habe ich festgestellt, dass der Keks eine chinesische Zeichenkette hat, wie folgt:




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


Der Browser schreibt einen Cookie-Code (Der folgende Codewert wird nicht entweichen) kann das Problem reproduzieren:

Die Browser-Konsole schreibt Cookies
https://www.itsvse.com/thread-4682-1-1.html
Versuchen Sie, den Cookie-Cache zu leeren, und das Gateway kehrt wie auf dem untenstehenden Bild gezeigten Zustand zum Normalzustand zurück:



Die Reihenfolge der Ausführung der Middleware mit Ocelot ist wie folgt:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Ende)




Vorhergehend:ASP.NET Core erhält den Link zur vollständigen URL der Anfrage
Nächster:Redis Benchmark Leistungstest
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com