Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 40852|Ответ: 0

[ASP.NET] Заголовки Ocelot Request должны содержать только ASCII-символы

[Скопировать ссылку]
Опубликовано 10.05.2021 15:24:29 | | | |
Обзор:

Серия Ocelot (1) ASP.NET Core Gateway на практике
https://www.itsvse.com/thread-9284-1-1.html


При запуске шлюза оцелота сообщается следующая ошибка для интерфейса доступа:
Код статуса: 502; Плохие ворота                                                                                                                                                                                                                                                                                                                                                                                                                      
Проект ASP.NET Core 3.1,Версия, используемая Ocelot, — 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: нет идентификатора предыдущего запроса, сообщение: EndpointRateLimiting не включен для /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: нет идентификатора предыдущего запроса, сообщение: Error Code: ConnectionToDownstreamServiceError Message: Error connecting to downstream service, исключение: System.Net.Http.HttpRequestException: Заголовки запроса должны содержать только ASCII-символы.
         на System.Net.Http.HttpHttpConnection.WriteStringAsync(String s)
         at System.Net.Http.HttpHttpConnection.WriteHeadersAsync(заголовки HttpHeaders, String cookiesFromContainer)
         на System.Net.Http.HttpHttpConnection.SendAsyncCore (HttpRequestMessage request, CancellationToken cancellationToken)
         на System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, булев doRequestAuth, CancellationToken cancellationToken)
         на System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         на System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
         at System.Net.Http.HttpClient.FinishSendAsyncBuffered (Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, булевый disposeCts)
         в Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) обнаружены ошибки в ResponderMiddleware. Установка ответа на ошибку для path запроса:/test1/home/index, метод запроса: GET
Используя Fiddler для ловли пакетов следующим образом, я обнаружил, что у печенья есть китайская строка, а именно:




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


Браузер записывает код cookie (Следующее значение кода не скрывается) может воспроизвести проблему:

Консоль браузера записывает файлы cookie
https://www.itsvse.com/thread-4682-1-1.html
Попробуйте опустошить кэш cookie, и шлюз вернётся в нормальное состояние, как показано на изображении ниже:



Порядок выполнения промежуточного программного обеспечения с Ocelot следующий:

PreErrorResponderMiddleware
PreAuthenticationMiddleware
AuthenticationMiddleware
PreAuthorisationMiddleware
AuthorisationMiddleware       
PreQueryStringBuilderMiddleware


(Конец)




Предыдущий:ASP.NET Core получает полную ссылку на запрос
Следующий:Тест производительности Redis Benchmark
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com