Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 40852|Απάντηση: 0

[ASP.NET] Οι κεφαλίδες αιτήματος Ocelot πρέπει να περιέχουν μόνο χαρακτήρες ASCII

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 10/5/2021 3:24:29 μ.μ. | | | |
Αναθεώρηση:

Σειρά Ocelot (1) ASP.NET Core Gateway στην πράξη
https://www.itsvse.com/thread-9284-1-1.html


Κατά την εκκίνηση της πύλης ocelot, αναφέρεται το ακόλουθο σφάλμα για τη διασύνδεση πρόσβασης:
Κωδικός κατάστασης: 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: δεν υπάρχει προηγούμενο αναγνωριστικό αιτήματος, μήνυμα: Κωδικός σφάλματος: ConnectionToDownstreamServiceError Μήνυμα: Σφάλμα κατά τη σύνδεση με την κατάντη υπηρεσία, exception: System.Net.Http.HttpRequestException: Οι κεφαλίδες αίτησης πρέπει να περιέχουν μόνο χαρακτήρες ASCII.
         στο System.Net.Http.HttpConnection.WriteStringAsync(String s)
         στο System.Net.Http.HttpConnection.WriteHeadersAsync(HttpHeaders headers, String cookiesFromContainer)
         στο System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
         στο System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         στο System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
         στο System.Net.Http.DiagnosticsHandler.SendAsync(Αίτηση HttpRequestMessage, CancellationToken cancellationToken)
         στο System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task'1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
         στο Ocelot.Requester.HttpClientHttpRequester.GetResponse(HttpContext httpContext) βρέθηκαν σφάλματα στο ResponderMiddleware. Ρύθμιση απόκρισης σφάλματος για τη διαδρομή αιτήματος:/test1/home/index, μέθοδος αιτήματος: GET
Χρησιμοποιώντας το Fiddler για να πιάσω πακέτα ως εξής, διαπίστωσα ότι το cookie έχει μια κινεζική συμβολοσειρά, ως εξής:




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 (Η ακόλουθη τιμή κώδικα δεν έχει χαρακτήρα διαφυγής) μπορεί να αναπαράγει το ζήτημα:

Η κονσόλα του προγράμματος περιήγησης γράφει cookies
https://www.itsvse.com/thread-4682-1-1.html
Προσπαθήστε να αδειάσετε την προσωρινή μνήμη cookie και η πύλη επιστρέφει στο κανονικό όπως φαίνεται στην παρακάτω εικόνα:



Η σειρά εκτέλεσης του ενδιάμεσου λογισμικού με το Ocelot έχει ως εξής:

PreErrorResponderMiddleware
Ενδιάμεσο λογισμικό προελέγχου ταυτότητας
Έλεγχος ταυτότηταςΕνδιάμεσο λογισμικό
Ενδιάμεσο λογισμικό προέγκρισης
ΕξουσιοδότησηΕνδιάμεσο λογισμικό       
PreQueryStringBuilderMiddleware


(Τέλος)




Προηγούμενος:ASP.NET Core λαμβάνει τον σύνδεσμο πλήρους διεύθυνσης URL αιτήματος
Επόμενος:Δοκιμή απόδοσης Redis Benchmark
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com