Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, API çağrılarına yanıt olarak protocol.http.Response405WithoutAllowHeader
hata koduna sahip 502 Bad Gateway
HTTP durum kodunu alı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 Allow
başlığı olmadan 405 Method Not Allowed
durum koduyla yanıt verirse ortaya çıkar.
RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor spesifikasyonuna göre, kaynak sunucunun şu anda desteklenen yöntemlerin listesini içeren bir 405
yanıtında Allow
üstbilgi alanı oluşturup göndermesi beklenir. Aksi takdirde Apigee, 502 Bad Gateway
ve protocol.http.Response405WithoutAllowHeader
hata koduyla yanıt verir.
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
Arka uç sunucudan "İzin ver" başlığı olmayan 405 yanıtı | API isteğini işleyen arka uç sunucusu, Allow başlığı olmadan 405 durum koduyla yanıt veriyor. |
Edge Herkese Açık ve Özel Bulut kullanıcıları |
Yaygın 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 uygun bir role sahip bir kullanıcı olarak giriş yapın.
Sorunu incelemek istediğiniz kuruluşa geçin.
- Analiz > API İzleme > Araştır sayfasına gidin.
- Hataları gözlemlediğiniz belirli zaman aralığını seçin.
Hata Kodu'nu Zamana göre çizin.
Aşağıda gösterildiği gibi
protocol.http.Response405WithoutAllowHeader
hata koduna sahip bir hücre seçin:protocol.http.Response405WithoutAllowHeader
hata kodu ile ilgili bilgi aşağıda gösterildiği gibi gösterilmektedir:Daha fazla bilgi görüntülemek için Günlükleri görüntüle 'yi tıklayın ve başarısız isteklerden birini genişletin.
- Günlükler penceresinde aşağıdaki ayrıntıları dikkate alın:
- Durum Kodu:
502
- Hata Kaynağı:
target
- Hata Kodu:
protocol.http.Response405WithoutAllowHeader
.
- Durum Kodu:
- Hata Kaynağı
target
ve Hata Koduprotocol.http.Response405WithoutAllowHeader
ise bu durum, arka uç sunucusununAllow
başlığı olmadan405 Method Not Allowed
durum koduyla yanıt verdiğini gösterir.
İzleme aracı
Hatayı İzle aracını kullanarak teşhis etmek için:
-
İzleme oturumunu ve
502 Bad Gateway
hatasının oluşmasını bekleyin veya- Sorunu yeniden oluşturabiliyorsanız sorunu yeniden oluşturmak için API çağrısı yapın:
502 Bad Gateway
hatası
Tüm FlowInfo'ları göster seçeneğinin etkin olduğundan emin olun:
- Başarısız isteklerden birini seçip izi inceleyin.
- İzin farklı aşamaları arasında gezinin ve hatanın nerede gerçekleştiğini bulun.
Hatayı genellikle İstek hedef sunucuya gönderildi aşamasından sonraki bir akışta aşağıda gösterildiği gibi bulabilirsiniz:
İzdeki hatanın değerini not edin.
Yukarıdaki örnek izde hata
Received 405 Response without Allow Header
olarak gösterilmektedir. Hata, istek arka uç sunucusuna gönderildikten sonra Apigee tarafından bildirildiğinden, arka uç sunucusunun405
yanıt durumu kodunuAllow
başlığı olmadan gönderdiğini belirtir.- İzdeki AX (Analytics Data Recorded) Aşamalı Sunumu'na gidin ve bunu tıklayın.
Aşama Ayrıntıları panelinde Hata / Yanıt Başlıkları bölümüne ilerleyin ve X-Apigee-fault-code ile X-Apigee-fault-source değerlerini aşağıda gösterildiği gibi belirleyin:
- X-Apigee-fault-code ve X-Apigee-fault-source değerlerini sırasıyla
protocol.http.Response405WithoutAllowHeader
vetarget
olarak göreceksiniz. Bu, arka ucun405
yanıt durumu kodunuAllow
başlığı olmadan gönderdiği için ortaya çıktığını gösterir.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 HTTP
502
hatalarıyla ilgili önemli bilgileri belirlemek için NGINX erişim günlüklerini kullanabilirsiniz. NGINX erişim günlüklerini kontrol edin:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
Yer: ORG, ORG ve PORT#, gerçek değerlerle değiştirilir.
- Belirli bir süre boyunca
protocol.http.Response405WithoutAllowHeader
hata koduna sahip502
hatası (sorun geçmişte olduysa) veya502
nedeniyle hâlâ başarısız olan bir istek olup olmadığını görmek için arama yapın. X-Apigee-fault-code ile
protocol.http.Response405WithoutAllowHeader
değeriyle eşleşen bir502
hatası bulursanız X-Apigee-fault-code değerinin değerini belirleyin.NGINX erişim günlüğünden örnek 502 hatası:
NGINX erişim günlüğünden yukarıdaki örnek giriş, X-Apigee- hata kodu ve X-Apigee-fault-source için aşağıdaki değerlere sahiptir:
Yanıt Başlıkları Değer X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
Neden: Arka uç sunucudan "İzin verme" bağlantısı olmayan 405 yanıtı
Teşhis
- Yaygın teşhis adımları bölümünde açıklandığı şekilde API İzleme, İzleme Aracı veya NGINX erişim günlüklerini kullanarak
502 Bad Gateway
için Hata Kodu ve Hata Kaynağı'nı belirleyin. - Hata Kodu
protocol.http.Response405WithoutAllowHeader
ise ve Hata Kaynağıtarget
değerine sahipse bu durum, arka uç sunucusununAllow
başlığı olmadan405
durum koduyla yanıt verdiğini gösterir. Bu nedenle Apigee,protocol.http.Response405WithoutAllowHeader
hata koduyla502 Bad Gateway
ile yanıt veriyor.
Çözünürlük
Sorunu gidermek için aşağıdaki yöntemlerden birini kullanın:
Arka uç sunucusu
1. Seçenek: Arka uç sunucusunu, Allow başlığıyla 405 durum kodu gönderecek şekilde düzeltme:
Arka uç sunucusunun her zaman RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor spesifikasyonuna uyduğundan ve
Allow
üstbilgisinin parçası olarak izin verilen yöntemlerin listesini aşağıda gösterildiği gibi ekleyerek405
durum koduyla gönderdiğinden emin olun:Allow: HTTP_METHODS
- Örneğin, arka uç sunucunuz
GET
,POST
veHEAD
yöntemlerine izin veriyorsaAllow
üst bilgisinin bunları aşağıdaki şekilde içerdiğinden emin olmanız gerekir:Allow: GET, POST, HEAD
Hata giderme
2. Seçenek: API proxy'nizden "İzin Ver" başlığıyla 405 durum kodu göndermek için Hata İşleme'yi kullanın:
Arka uç sunucusu 405
durum kodunu Allow
başlığı olmadan döndürürse 405
durum kodu ve API proxy'nizden Allow
üstbilgisiyle aşağıdaki şekilde yanıt vermek için hata işlemeyi kullanabilirsiniz:
assignMessage policy veya giderFault politikası gibi bir politika oluşturun ve durum kodunu,
Allow
üstbilgisi ve özel bir mesaj içeren405
olarak ayarlayın.Allow üstbilgisiyle 405 göndermek için örnek Atayarak İleti 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,protocol.http.Response405WithoutAllowHeader
hata kodunu içeren502
hatasını aldıktan sonra politikayı çağıran birFaultRule
oluşturun.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ı yapın ve
Allow
başlığıyla405
durum kodunu aldığınızı doğrulayın.
Mülkü yapılandır
3. Seçenek: Apigee Edge'in 502 hatası döndürmesini önlemek için Mesaj İşleyici'deki özelliği yapılandırın
- Private Cloud kullanıcısıysanız, arka uç sunucusu "Nasıl Yapılır?" kılavuzunu kullanarak
Allow
başlığı olmadan405
durum kodu ile yanıt verse bile Apigee Edge'in502
hatası oluşturmasını önlemek içinHTTP.ignore.allow_header.for.405
özelliğinitrue
olarak güncelleyebilirsiniz: İleti İşleyicilerde 405 özelliği için "yoksaymayı yoksay" başlığını yapılandırma. - Genel Bulut kullanıcısıysanız lütfen Apigee Edge Destek Ekibi ile iletişime geçin.
Spesifikasyon
Apigee, arka uç sunucudan Allow
üst bilgisi ile birlikte aşağıdaki spesifikasyonlara göre 405 Method Not Allowed
yanıtını bekler:
Spesifikasyon | |
---|---|
RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor | |
RFC 7231, bölüm 7.4.1: Allow |
Dikkat edilmesi gereken önemli noktalar
Önerilen çözüm, arka uç sunucusunun 405
durum kodunu Allow
üstbilgisiyle birlikte gönderecek ve
RFC 7231, bölüm 6.5.5: 405 Yönteme İzin Verilmiyor spesifikasyonuna uymasıdır.
Apigee Desteği'nden hâlâ yardıma ihtiyacınız varsa Teşhis bilgilerini toplamalısınız başlıklı makaleyi inceleyin.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki teşhis bilgilerini toplayıp Apigee Edge Destek Ekibi ile iletişime geçin.
Herkese Açık Bulut kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Kuruluş adı
- Ortam adı
- API Proxy adı
502 Bad Gateway
öğesiniprotocol.http.Response405WithoutAllowHeader
hata koduyla 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 gözlemlenen tam hata mesajı
- 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
Yer: 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