Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 40852|Atbildi: 0

[ASP.NET] Ocelot pieprasījuma galvenēs drīkst būt tikai ASCII rakstzīmes

[Kopēt saiti]
Publicēts 10.05.2021 15:24:29 | | | |
Pārskats:

Ocelot sērija (1) ASP.NET Core Gateway praksē
https://www.itsvse.com/thread-9284-1-1.html


Startējot ocelot vārteju, piekļuves interfeisam tiek ziņots par šādu kļūdu:
Statusa kods: 502; Slikta vārteja                                                                                                                                                                                                                                                                                                                                                                                                                      
Projekts ir ASP.NET Core 3.1,Ocelot izmantotā versija ir 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: nav iepriekšējā pieprasījuma ID, ziņojums: EndpointRateLimiting nav iespējots /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: nav iepriekšējā pieprasījuma ID, ziņojums: Kļūdas kods: ConnectionToDownstreamServiceError Message: Kļūda, izveidojot savienojumu ar pakārtoto pakalpojumu, izņēmums: System.Net.Http.HttpRequestException: pieprasījuma galvenēs drīkst būt tikai ASCII rakstzīmes.
         vietnē System.Net.Http.HttpConnection.WriteStringAsync(String s)
         vietnē System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders galvenes, String cookiesFromContainer)
         vietnē System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage pieprasījums, CancellationToken cancellationToken)
         vietnē System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         vietnē System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage pieprasījums, Būla doRequestAuth, CancellationToken cancellationToken)
         vietnē System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage pieprasījums, CancellationToken cancellationToken)
         vietnē System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Būla disposeCts)
         Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) kļūdas atrastas ResponderMiddleware. Kļūdas atbildes iestatīšana pieprasījuma ceļam:/test1/home/index, pieprasījuma metode: GET
Izmantojot Fiddler, lai noķertu paciņas šādi, es atklāju, ka sīkdatnei ir ķīniešu virkne:




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


Pārlūkprogramma raksta sīkfaila kodu (Tālāk norādītā koda vērtība netiek izvairīta) var reproducēt jautājumu:

Pārlūkprogrammas konsole raksta sīkdatnes
https://www.itsvse.com/thread-4682-1-1.html
Mēģiniet iztukšot sīkfailu kešatmiņu, un vārteja atgriežas normālā stāvoklī, kā parādīts zemāk redzamajā attēlā:



Starpprogrammatūras izpildes secība ar Ocelot ir šāda:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AutentifikācijaStarpprogrammatūra
Pirmsautorizācijas starpprogrammatūra
AuthorizationMiddleware       
PreQueryStringBuilderMiddleware


(Beigas)




Iepriekšējo:ASP.NET Core saņem pieprasījuma pilnu URL saiti
Nākamo:Redis Benchmark veiktspējas tests
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com