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 verme 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.Response405WithoutAllowHeader
hata 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ğı
target
ve Hata Koduprotocol.http.Response405WithoutAllowHeader
, bu durumda arka ucun sunucu, aşağıdaki kod olmadan405 Method Not Allowed
durum koduyla yanıt verdi:Allow
üstbilgisi.
İzleme aracı
İzleme aracını kullanarak hatayı teşhis etmek için:
-
oturumu izleme ve
502 Bad Gateway
hatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız API çağrısını yaparak sorunu yeniden oluşturun:
502 Bad Gateway
hata
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 Header
olarak gösteriyor. Hata, istek arka uca gönderildikten sonra Apigee tarafından ortaya çıktığı için arka uç sunucusunun405
yanıt durum kodunu gönderdiğini belirtir (Allow
baş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.Response405WithoutAllowHeader
vetarget
sırasıyla, Bu hatanın, arka uç tarafından gönderilen bir kod veyaAllow
başlığı içermeyen405
yanıt durum kodu.Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-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
502
hataları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
502
hatası 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
502
ardındanprotocol.http.Response405WithoutAllowHeader
değ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.Response405WithoutAllowHeader
X-Apigee-fault-source target
Neden: Arka uç sunucusundan "Allow üstbilgisi" bilgisi olmadan 405 yanıtı
Teşhis
502 Bad Gateway
iç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.Response405WithoutAllowHeader
ise ve Hata Kaynağıtarget
değerine sahipse bu, arka uç sunucusundaAllow
başlığı olmadan405
durum koduyla yanıt verdi. Dolayısıyla, Apigee, hata koduyla502 Bad Gateway
mesajı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
405
durumuyla gönderirAllow
baş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
,POST
veHEAD
yö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
405
olarak ayarlayın veAllow
baş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>
TargetEndpoint
içinde, politikayı çağıran birFaultRule
oluşturun ve hata koduyla birlikte502
hatası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
405
durum 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
-true
arasında arka uç sunucusu405
ile yanıt verse bile502
hatası veriyor Nasıl yapılır kılavuzu kullanılarakAllow
baş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ılancurl
komutunu 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
.