Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması, API'ye yanıt olarak protocol.http.TooBigHeaders
hata koduyla birlikte 431 Request Header Fields Too
Large
HTTP durum kodunu alıyor
çağrısının en iyi yoludur.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 431 Request Header Fields Too Large
Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:
{ "fault":{ "faultstring":"request headers size exceeding 25,600", "detail":{ "errorcode":"protocol.http.TooBigHeaders" } } }.
Olası nedenler
Bu hata, istemci uygulaması tarafından Apigee Edge, HTTP isteğinin bir parçası olarak Apigee Edge'de izin verilen sınır şu şekildedir: RFC 6585, bölüm 5: 431 İstek Üstbilgisi Alanları Çok Büyük.
Bu hatanın olası nedenleri aşağıda açıklanmıştır:
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
İstek Başlıkları boyutu izin verilen sınırdan büyük | İstemci uygulaması tarafından Apigee Edge, Apigee Edge'de izin verilen sınırdan büyüktür. | Edge Herkese Açık ve Private Cloud kullanıcıları |
Sık kullanılan teşhis adımları
Bu hatayı teşhis etmek için aşağıdaki araçlardan/tekniklerden birini kullanın:
API Monitoring
API Monitoring'i kullanarak hatayı teşhis etmek için:
- Apigee Edge kullanıcı arayüzünde uygun role sahip olur.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analiz > API İzleme > İnceleme sayfası.
- Hataları gözlemlediğiniz zaman aralığını seçin.
- Zaman ile Hata Kodu'nun grafiğini çizin.
protocol.http.TooBigHeaders
hata koduna sahip bir hücre seçin ve aşağıda gösterildiği gibi431
durum kodu:( resmi büyüt)
protocol.http.TooBigHeaders
hata koduyla ilgili bilgileri görürsünüz aşağıdaki gibidir:( resmi büyüt)
Günlükleri görüntüle'yi tıklayın ve başarısız isteğin olduğu satırı genişletin:
( resmi büyüt)
Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
- Durum Kodu:
431
- Hata Kaynağı:
apigee
- Hata Kodu:
protocol.http.TooBigHeaders
. - İstek Uzunluğu(bayt):
32150 (> 25 KB)
- Durum Kodu:
- Hata Kaynağı
apigee
veyaMP
değerine sahipse Hata Kodu,protocol.http.TooBigHeaders
değerine sahiptir ve İstek Uzunluğu 25 KB'tan büyük olduğunda, bu boyut HTTP isteğinin bir parçası olarak istemci uygulaması tarafından gönderilen tüm istek üstbilgileri, daha Apigee'de izin verilen sınır'a dokunun.
İzleme aracı
NGINX
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Private Cloud kullanıcısıysanız NGINX erişim günlüklerini kullanarak şunları yapabilirsiniz:
HTTP
431
hatalarıyla ilgili önemli bilgileri belirler. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Konum: ORG, ENV ve PORT# gerçek değerlerle değiştirilir.
- Belirli bir sürede
431
hatası olup olmadığını görmek için arama yapın (sorun geçmişte oluşmuşsa) veya hâlâ başarısız olan bir istek varsa431
X-Apigee-fault-code'da
431
hatası bulursanızprotocol.http.TooBigHeaders
değeriyle eşleşir ve ardından X-Apigee-fault-source.'un değerini ifade eder.NGINX erişim günlüğünden yukarıdaki örnek giriş, X-Apigee-fault-code ve X-Apigee-fault-source:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source MP
İstek Uzunluğuna dikkat edin:
40159
(40 KB, 25 KB'tan büyüktür, Apigee Edge'de istek başlıkları için izin verilen sınır)Yukarıdaki örnek günlük girişinde, X-Apigee-fault-source aşağıdaki değere sahiptir:
apigee
veyaMP
olması durumunda, X-Apigee-fault-codeprotocol.http.TooBigHeaders
ve İstek Uzunluğu 40 KB'tır. Bu boyut, Apigee'de izin verilen sınırdan fazla - 25 KB. Bu durum, modelin HTTP'nin bir parçası olarak istemci uygulaması tarafından gönderilen tüm istek başlıklarının toplam boyutu isteği, Apigee Edge'de izin verilen 25 KB sınırını aştı.
Neden: İstek Başlığı boyutu izin verilen sınırın üzerinde
Teşhis
- Şu öğe için Hata Kodu, Hata Kaynağı ve İstek-Uzunluğu boyutunu belirleyin. API Monitoring veya NGINX Erişim günlükleri kullanılırken aşağıdaki sayfada açıklandığı gibi bir hata gözlemlendi: Yaygın teşhis adımları.
- Hata Kaynağı
apigee
veyaMP
değerine sahipse Hata Koduprotocol.http.TooBigHeaders
değerine sahiptir. İstek Uzunluğu 25 KB'tan büyükse bu değer istemci uygulaması tarafından Apigee'ye gönderilen istek boyutunun Apigee Edge'de izin verilen sınır. - İstek üstbilgilerinin boyutunun 25 KB'lık sınırı aştığını doğrulamak için şunlardan birini kullanabilirsiniz:
aşağıdaki yöntemleri kullanabilirsiniz:
Hata mesajı
Hata mesajını kullanarak doğrulamak için:
Apigee Edge'den alınan hata mesajının tamamına erişiminiz varsa
faultstring
inceleyin.faultstring
, şunu belirtiyor: İstek Başlıklarının toplam boyutu, izin verilen 25 KB'lık sınırı aştı.Örnek hata mesajı:
"faultstring":"request headers size exceeding 25,600"
Gerçek istek
Gerçek isteği kullanarak doğrulamak için:
İstemci uygulamanın yaptığı asıl isteğe erişiminiz varsa ardından aşağıdaki adımları uygulayın:
- İstekte iletilen üstbilgilerin boyutunu doğrulayın.
Üstbilgilerin toplam boyutunun Apigee Edge'de izin verilen sınır bir açıklama ekleyin.
Örnek istek:
curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
Yukarıdaki örnekte, üstbilgilerin toplam boyutu
header0
,header1
,header2
, veheader3
25 KB'tan büyükse, yani 25 K ASCII karakterden (bayt) fazla.Başka bir istemci kullanıyorsanız istemci günlüklerini inceleyebilir ve Apigee Edge'e gönderilen istek satırının büyüklüğünü öğrenmeye çalışın.
İleti işleyen günlükleri
İleti İşleyici günlüklerini kullanarak doğrulamak için:
Private Cloud kullanıcısıysanız Mesaj İşleyici günlüklerini kullanarak İstek Başlıkları boyutunun Apigee Edge'de izin verilen sınır.
İleti İşleyici günlüklerini kontrol edin:
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Belirli bir sırasında
431
hatası olup olmadığını görmek için arama yapın (sorun geçmişte oluşmuşsa) veya herhangi bir istek varsa hâlâ431
ile başarısız oluyor. Aşağıdaki arama dizelerini kullanabilirsiniz.grep -ri "exceeding"
grep -ri "RequestHeadersTooLarge"
system.log
sağlayıcısından şuna benzer satırlar göreceksiniz:2021-07-27 08:30:28,419 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:GET, uri:/test/, message Id:null, exception:com.apigee.errors.http.user.RequestHeadersTooLarge{ code = protocol.http.TooBigHeaders, message = request headers size exceeding 25,600, associated contexts = []}, context:Context@9c5903 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130 useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms lastIO=0ms isOpen=true)
Şu sayfadaki
message = request headers size exceeding 25,600
metni: yukarıdaki hata mesajı, toplam İstek Başlığı boyutunun şundan daha fazla olduğunu gösteriyor 25 KB. Bu nedenle, Apigee Edge istisnayıcom.apigee.errors.http.user.RequestHeadersTooLarge
ve iade İstemci uygulamalarına hata koduyla birlikteprotocol.http.TooBigHeaders
431
durum kodu.
Çözünürlük
Boyutu sabitle
1. Seçenek [Önerilen]: İstemci uygulamasının istek başlıklarını toplam boyut izin verilen sınırdan büyük
- Belirli bir istemcinin neden büyük boyutlu İstek Başlığı göndermesi gerektiğini analiz edin Bu boyut, toplam başlık boyutunu şu şekilde tanımlanan izin verilen sınırdan fazla yapar: Sınırlar.
İstenmiyorsa istemci uygulamanızı, İzin verilen sınırdan küçük bir boyuta sahip başlık isteyin.
Yukarıda açıklanan örnekte uzun başlığı ileterek sorunu çözebilirsiniz value parametresini eklemeniz gerekir:
curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'
- İsterseniz ve izin verilen sınırın üzerinde bir üstbilgi göndermek istiyorsanız seçeneğini belirleyin.
CwC
2. seçenek : İstek satırı sınırını artırmak için CwC mülkünü kullanma
Apigee, CwC özelliğini kullanabilirsiniz. Ayrıntılı bilgi için Mesaj İşleyici'de istek satırı sınırını belirleyin
Sınırlar
Apigee, istemci uygulamasının ve arka uç sunucusunun şunları göndermemesini bekler Boyutları belgelendiği şekilde izin verilen sınırın üzerinde olan İstek/Yanıt Başlıkları for İstek/Yanıt Başlığı Boyutu Sınırı için Apigee Edge Sınırları.
- Herkese açık Cloud kullanıcısıysanız İstek/Yanıt Başlığı boyutu için belirtildiği şekilde İstek ve Yanıt Başlıkları Apigee Edge Sınırları.
- Private Cloud kullanıcısıysanız varsayılan maksimum sayıyı değiştirmiş olabilirsiniz. sınırı (önerilen bir uygulama olmasa bile). Aşağıdaki talimatları uygulayarak maksimum İstek Üstbilgisi boyut sınırını belirleyebilirsiniz: Geçerli sınır nasıl kontrol edilir?
Geçerli sınır nasıl kontrol edilir?
Bu bölümde, HTTPRequest.headers.limit
mülkünün şu özelliklere sahip olduğunu nasıl doğrulayacağınız açıklanmaktadır:
Mesaj İşleyicilerde yeni bir değerle güncellendi.
- İleti İşleyici makinesinde özelliği arayın.
HTTPRequest.headers.limit
/opt/apigee/edge-message-processor/conf
dizini ve için kontrol et: hangi değerin ayarlandığını aşağıda gösterildiği gibi görebilirsiniz:grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
- Yukarıdaki komuttan elde edilen örnek sonuç aşağıdaki gibidir:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
. Yukarıdaki örnek çıkışta,
HTTPRequest.headers.limit
özelliğine dikkat edin.http.properties
içinde25k
değeriyle ayarlandı.Bu, Özel için Apigee'de yapılandırılan İstek Başlığı boyutu sınırının olduğunu gösterir. Bulut boyutu 25 KB'tır.
Spesifikasyon
Apigee Edge, istemci uygulamasının
isteği gönderin. İsteğin, toplam boyutu belirtilen sınırın üzerinde olan başlıklar içermesi durumunda
Apigee, aşağıdaki RFC'ye göre 431 Request Header Fields Too Large
öğesini yayınlar
özellikler:
Spesifikasyon |
---|
RFC 6585, bölüm 5: 431 İstek Üstbilgisi Alanları Çok Büyük |
Hâlâ Apigee Destek Ekibi'nden yardım almak istiyorsanız şu sayfaya gidin: Teşhis bilgileri toplanmalıdır.
Teşhis bilgileri toplanmalıdır
Aşağıdaki teşhis bilgilerini toplayın, ardından Apigee Edge Destek Ekibi ile iletişime geçin:
Herkese açık Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API Proxy adı
431
hatasını yeniden oluşturmak için kullanılancurl
komutunu tamamlayın- API istekleri için izleme dosyası
Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Başarısız istekler için tam hata mesajı gözlemlendi
- Kuruluş adı
- Ortam adı
- API Proxy paketi
- Başarısız API istekleri için izleme dosyası
431
hatasını yeniden oluşturmak için kullanılancurl
komutunu tamamlayınNGINX erişim günlükleri
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Yer: ORG, ENV ve PORT# şununla değiştirilir: gerçek değerler.
- Mesaj İşleyici sistem günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log