Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması 502 Bad Gateway şeklinde bir HTTP durum kodu alıyor
API çağrılarına yanıt olarak protocol.http.Response405WithoutAllowHeader kodunu kullanır.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 502 Bad Gateway
Ayrıca, aşağıdaki hata mesajını da görebilirsiniz:
{
"fault":{
"faultstring":"Received 405 Response without Allow Header",
"detail":{
"errorcode":"protocol.http.Response405WithoutAllowHeader"
}
}
}Olası nedenler
Bu hata, arka uç sunucusu 405 Method Not Allowed durumuyla yanıt verirse oluşur
Allow başlığı olmadan kod.
Spesifikasyona göre
RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor durumunda, kaynak sunucunun
Bir 405 yanıtında,Allow
Hedef kaynağın şu anda desteklenen yöntemlerinin listesi. Aksi halde Apigee,
502 Bad Gateway ve hata kodu protocol.http.Response405WithoutAllowHeader.
| Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
|---|---|---|
| Arka uç sunucusundan izin ver başlığı olmadan 405 yanıtı | API isteğini işleyen arka uç sunucusu, Allow başlığı olmadan 405 durum koduyla yanıt verir. |
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:
- Edge kullanıcı arayüzüne sahip bir kullanıcı olarak 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.
Hata kodunun bulunduğu bir hücre seçin Aşağıda gösterildiği gibi
protocol.http.Response405WithoutAllowHeader:
protocol.http.Response405WithoutAllowHeaderhata koduyla ilgili bilgi aşağıda gösterildiği gibi görüntülenir:
Günlükleri görüntüle 'yi tıklayın ve daha fazla bilgi görüntülemek için başarısız isteklerden birini genişletin.
- Günlükler penceresinde aşağıdaki ayrıntılara dikkat edin:
- Durum Kodu:
502 - Hata Kaynağı:
target - Hata Kodu:
protocol.http.Response405WithoutAllowHeader.
- Durum Kodu:
- Hata Kaynağı
targetve Hata Koduprotocol.http.Response405WithoutAllowHeader, bu durumda arka ucun sunucu, aşağıdaki kod olmadan405 Method Not Alloweddurum koduyla yanıt verdi:Allowüstbilgisi.
İzleme aracı
İzleme aracını kullanarak hatayı teşhis etmek için:
-
oturumu izleme ve
502 Bad Gatewayhatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız API çağrısını yaparak sorunu yeniden oluşturun:
502 Bad Gatewayhata
Show all FlowInfos (Tüm Akış Bilgilerini Göster) seçeneğinin etkin olduğundan emin olun:
- Başarısız isteklerden birini seçin ve izini inceleyin.
- İzlemenin farklı aşamaları arasında gezinin ve hatanın nerede oluştuğunu bulun.
Hatayı genellikle İstek hedef sunucuya gönderildi ifadesinden sonraki bir akışta bulabilirsiniz. aşamasındaki aşamayı tamamlayın:
İzdeki hatanın değerini not edin.
Yukarıdaki örnek iz, hatayı
Received 405 Response without Allow Headerolarak gösteriyor. Hata, istek arka uca gönderildikten sonra Apigee tarafından ortaya çıktığı için arka uç sunucusunun405yanıt durum kodunu gönderdiğini belirtir (Allowbaşlığı olmadan).- İzlemedeki AX (Analytics Verilerinin Kaydedilen) Aşamasına gidin ve tıklayın.
Aşama Ayrıntıları'nda Hata / Yanıt Üstbilgileri bölümüne ilerleyin bir kontrol paneli aracılığıyla X-Apigee-fault-code ve X-Apigee-fault-source değerlerini aşağıda görebilirsiniz:
- Burada X-Apigee-fault-code ve X-Apigee-fault-source değerlerini görebilirsiniz.
protocol.http.Response405WithoutAllowHeadervetargetsırasıyla, Bu hatanın, arka uç tarafından gönderilen bir kod veyaAllowbaşlığı içermeyen405yanıt durum kodu.Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target
NGINX
NGINX erişim günlüklerini kullanarak hatayı teşhis etmek için:
- Private Cloud kullanıcısıysanız aşağıdakileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz:
HTTP
502hatalarıyla ilgili önemli bilgileri inceleyin. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Konum: ORG, ORG ve PORT#, gerçek değerlerle değiştirilir.
- Hata kodu içeren
502hatası olup olmadığını görmek için arama yapın Belirli bir süre boyuncaprotocol.http.Response405WithoutAllowHeader( olup olmadığını kontrol edin) veya hâlâ başarısız olan bir istek varsa502 X-Apigee-fault-code parametresini içeren
502ardındanprotocol.http.Response405WithoutAllowHeaderdeğerini belirleyip X-Apigee-fault-source.'un sunabileceği değer.NGINX erişim günlüğündeki örnek 502 hatası:
NGINX erişim günlüğünden alınan yukarıdaki örnek giriş, X-Apigee- hata kodu ve X-Apigee-fault-source:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target
Neden: Arka uç sunucusundan "Allow üstbilgisi" bilgisi olmadan 405 yanıtı
Teşhis
502 Bad Gatewayiçin Hata Kodunu ve Hata Kaynağını belirleyin Şurada açıklandığı şekilde API İzleme, İzleme Aracı veya NGINX erişim günlüklerini kullanma Yaygın teşhis adımları.- Hata Kodu
protocol.http.Response405WithoutAllowHeaderise ve Hata Kaynağıtargetdeğerine sahipse bu, arka uç sunucusundaAllowbaşlığı olmadan405durum koduyla yanıt verdi. Dolayısıyla, Apigee, hata koduyla502 Bad Gatewaymesajıyla yanıt verdiprotocol.http.Response405WithoutAllowHeader.
Çözünürlük
Sorunu çözmek için aşağıdaki yöntemlerden birini kullanın:
Arka uç sunucusu
1. Seçenek: Arka Uç Sunucusu'nu, İzin Ver başlığı ile 405 durum kodu gönderecek şekilde düzeltin:
Arka uç sunucusunun her zaman spesifikasyona uyduğundan emin olun RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor ve
405durumuyla gönderirAllowbaşlığının bir parçası olarak izin verilen yöntemlerin listesini ekleyerek kodu aşağıdaki gibidir:Allow: HTTP_METHODS
- Örneğin, arka uç sunucunuz
GET,POSTveHEADyöntemini kullanıyorsanız,Allowüstbilgisinin bunları şöyle sıralayabiliriz:Allow: GET, POST, HEAD
Arıza giderme
2. Seçenek: API'nizden İzin Ver başlığı ile 405 durum kodu göndermek için Hata İşlemeyi kullanın. proxy'si:
Arka uç sunucusu 405 durum kodunu Allow olmadan döndürürse
405 durum kodu ile yanıt vermek için hata işlemeyi ve
API proxy'nizden Allow üstbilgisi aşağıdaki gibidir:
Şunun gibi bir politika oluşturun: assignMessage politikası veya RaiseFault politikasına göz atın. ve durum kodunu
405olarak ayarlayın veAllowbaşlığı ve özel mesajını alırsınız.İzin Ver üstbilgisi ile 405 mesajı göndermek için örnek Atama İletisi politikası:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-405WithAllowHeader"> <DisplayName>AM-405WithAllowHeader</DisplayName> <Set> <Payload contentType="application/json">{"Specified method is not allowed. Please use one of the methods mentioned in the Allow header."}</Payload> <StatusCode>405</StatusCode> <ReasonPhrase>Method Not Allowed</ReasonPhrase> </Set> <Add> <Headers> <Header name="Allow">GET, POST, HEAD</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
TargetEndpointiçinde, politikayı çağıran birFaultRuleoluşturun ve hata koduyla birlikte502hatasını aldıktan sonraprotocol.http.Response405WithoutAllowHeader.FaultRule'ü gösteren örnek TargetEndpoint yapılandırması:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>- Bu değişiklikleri API proxy'nizin yeni bir düzeltmesine kaydedin ve düzeltmeyi dağıtın.
- API çağrılarını yapın ve
405durum kodunuAllowüstbilgisi.
Mülkü yapılandırın
3. Seçenek: Apigee Edge'in şunları yapmasını engellemek için Mesaj İşlemci'de özelliği yapılandırın: 502 hatası döndürülüyor
- Private Cloud kullanıcısıysanız mülkü güncelleyebilirsiniz
Apigee Edge'in şu işlemleri yapmasını önlemek için
HTTP.ignore.allow_header.for.405-truearasında arka uç sunucusu405ile yanıt verse bile502hatası veriyor Nasıl yapılır kılavuzu kullanılarakAllowbaşlığı olmadan durum kodu: İleti İşlemcilerinde 405 özelliği için "izin verme" üstbilgisini yapılandırma. - Herkese Açık Cloud kullanıcısıysanız lütfen Apigee Edge Destek Ekibi ile iletişime geçin
Spesifikasyon
Apigee, arka uç sunucusundan 405 Method Not Allowed yanıtının yanı sıra
aşağıdaki spesifikasyonlara göre Allow başlığıyla değiştirin:
| Spesifikasyon | |
|---|---|
| RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor | |
| RFC 7231, bölüm 7.4.1: İzin ver |
Dikkat edilmesi gereken önemli noktalar
Önerilen çözüm, arka uç sunucusunu 405 durum kodunu gönderecek şekilde düzeltmektir
Allow başlığı ile ve spesifikasyona uygun
RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor.
Hâlâ Apigee Destek Ekibi'nden yardım almak istiyorsanız adresine gidin. Teşhis bilgileri toplanmalıdır.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki ve 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ı
502 Bad Gatewayöğesini yeniden oluşturmak için kullanılancurlkomutunu tamamlayın hata koduprotocol.http.Response405WithoutAllowHeader- 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
- Ortam adı
- API proxy paketi
- API istekleri için izleme dosyası
NGINX erişim günlükleri
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Konum: ORG, ORG ve PORT#, gerçek değerlerle değiştirilir.
- Mesaj İşleyici sistem günlükleri
/opt/apigee/var/log/edge-message-processor/logs/system.log