Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 40852|Jawab: 0

[ASP.NET] Header Permintaan Ocelot hanya boleh berisi karakter ASCII

[Salin tautan]
Diposting pada 10/05/2021 15.24.29 | | | |
Resensi:

Seri Ocelot (1) ASP.NET Core Gateway dalam praktik
https://www.itsvse.com/thread-9284-1-1.html


Saat Anda memulai gateway ocelot, kesalahan berikut dilaporkan untuk antarmuka akses:
Kode Status: 502; Gerbang Buruk                                                                                                                                                                                                                                                                                                                                                                                                                      
Proyek ini ASP.NET Core 3.1,Versi yang digunakan oleh Ocelot adalah 16.0.1



info: Ocelot.RateLimit.Middleware.ClientRateLimitMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: tidak ada id permintaan sebelumnya, pesan: EndpointRateLimiting tidak diaktifkan untuk /{url}
warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
      requestId: 0HM8JAOKL2C09:00000006, previousRequestId: tidak ada id permintaan sebelumnya, pesan: Kode Kesalahan: ConnectionToDownstreamServiceError Message: Kesalahan saat menyambungkan ke layanan hilir, pengecualian: System.Net.Http.HttpRequestException: Header permintaan hanya boleh berisi karakter ASCII.
         di System.Net.Http.HttpConnection.WriteStringAsync(String s)
         di System.Net.Http.HttpConnection.WriteHeadersAsync(header HttpHeaders, String cookiesFromContainer)
         di System.Net.Http.HttpConnection.SendAsyncCore(permintaan HttpRequestMessage, CancellationToken cancellationToken)
         di System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(Koneksi HttpConnection, permintaan HttpRequestMessage, Boolean doRequestAuth, CancellationToken cancellationToken)
         di System.Net.Http.HttpConnectionPool.SendWithRetryAsync(Permintaan HttpRequestMessage, Boolean doRequestAuth, CancellationToken cancellationToken)
         di System.Net.Http.DiagnosticsHandler.SendAsync(Permintaan HttpRequestMessage, CancellationToken cancellationToken)
         di System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, permintaan HttpRequestMessage, CancellationTokenSource cts, Boolean disposeCts)
         di Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) ditemukan di ResponderMiddleware. Mengatur respons kesalahan untuk jalur permintaan:/test1/home/index, metode permintaan: GET
Menggunakan Fiddler untuk menangkap paket sebagai berikut, saya menemukan bahwa cookie memiliki string Cina, sebagai berikut:




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


Browser menulis kode cookie (Nilai kode berikut tidak diloloskan) dapat mereproduksi masalah:

Konsol browser menulis cookie
https://www.itsvse.com/thread-4682-1-1.html
Coba kosongkan cache cookie dan gateway kembali normal seperti yang ditunjukkan pada gambar di bawah ini:



Urutan eksekusi middleware dengan Ocelot adalah sebagai berikut:

PraErrorResponderMiddleware
PraAutentikasiMiddleware
AutentikasiMiddleware
PraOtorisasiMiddleware
OtorisasiMiddleware       
PreQueryStringBuilderMiddleware


(Akhir)




Mantan:ASP.NET Core mendapatkan tautan URL lengkap permintaan
Depan:Uji kinerja Redis Benchmark
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com