Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, The plain HTTP request was sent to HTTPS port
mesajını içeren bir HTTP 400 Bad Request
yanıtı alır.
Hata mesajı
İstemci uygulaması aşağıdaki yanıt kodunu alır:
HTTP/1.1 400 Bad Request
Ardından aşağıdaki HTML hata sayfası gelir:
<html> <head><title>400 The plain HTTP request was sent to HTTPS port</title></head> <body> <center><h1>400 Bad Request</h1></center> <center>The plain HTTP request was sent to HTTPS port</center> </body> </html>
Olası nedenler
Neden | Açıklama | Şunun için geçerli sorun giderme talimatları: |
---|---|---|
TLS ile yapılandırılmış bir sanal ana makineye HTTP isteği | İstemci, TLS ile yapılandırılmış bir sanal ana makineye HTTP isteği gönderir | Edge Herkese Açık ve Özel Bulut kullanıcıları |
TLS yapılandırılmış hedef uç noktasına HTTP isteği | Hedef uç noktadaki TLS özellikli bir arka uç sunucusuna yapılan HTTP isteği. | Edge Herkese Açık ve Özel Bulut kullanıcıları |
Hatalı hedef sunucu yapılandırması | Hedef sunucu, 443 güvenli bağlantı noktasıyla yapılandırılmış ancak SSL etkin değil. |
Edge Herkese Açık ve Özel Bulut kullanıcıları |
Neden: TLS ile yapılandırılmış bir sanal ana makineye HTTP isteği
Bu hata, bir istemci Apigee'deki bir API'ye bağlanmaya çalıştığında ve bahsedilen sanal ana makine SSL kullanacak şekilde yapılandırıldığında ve bunun yerine HTTP isteği aldığında ortaya çıkar.
Teşhis
Bu sorun Northbound uç noktasında meydana geldiği ve istemci uygulaması ile Yönlendirici arasındaki giriş noktası etkileşiminde API istekleri başarısız olduğu için bu hata mesajları NGINX yönlendirici erişim günlüklerine kaydedilmez. Bu nedenle bu istekler, API İzleme ve İzleme aracı gibi araçlarda yakalanmaz.
-
API isteğinizi doğrulayın ve istekleri yalnızca
443
güvenli bağlantı noktasında kabul edecek şekilde yapılandırılmış bir ana makine takma adı için HTTP isteği yapıp yapmadığınıza bakın. Öyleyse sorunun nedeni budur.Örnek yanlış API isteği:
curl http://org-test.apigee.net:443/400-demo
<html> <head><title>400 The plain HTTP request was sent to HTTPS port</title></head> <body> <center><h1>400 Bad Request</h1></center> <center>The plain HTTP request was sent to HTTPS port</center> <hr><center>server</center> </body> </html>
- Yukarıdaki örnek istekte,
443
güvenli bağlantı noktası üzerinde ana makine takma adınamyorg-test.apigee.net
bir HTTP isteğinin gönderildiğini unutmayın.400 Bad Request
hatasının nedeni budur.
Çözünürlük
İstemcinin HTTP yerine HTTP kullanıp kullanmadığını doğrulamanız ve aşağıda gösterildiği gibi doğru isteği yapmanız gerekir:
Örnek API isteği:
curl https://org-test.apigee.net:443/400-demo
veya
curl https://org-test.apigee.net/400-demo
< HTTP/1.1 200 OK < Date: Thu, 25 Feb 2021 13:01:43 GMT < Content-Type: text/xml;charset=UTF-8 < Content-Length: 403 < Connection: keep-alive < Server: gunicorn/19.9.0 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true
Neden: TLS ile yapılandırılmış hedef uç noktasına HTTP isteği
Bu hata, bir API Proxy'sinin hedef uç noktasında, TLS özellikli bir arka uç sunucusuna gönderilen HTTP isteklerini yanlış yapılandırdıysanız ortaya çıkar.
Teşhis
İzleme aracını kullanarak hatayı teşhis etmek için aşağıdaki adımları uygulayın:
- Etkilenen API Proxy'si için Apigee kullanıcı arayüzünde Trace'i etkinleştirin.
- API Proxy'sine istek gönderin.
400
yanıt koduyla başarısız olan API isteklerinden birini seçin.- Çeşitli aşamalar arasında gezinin ve hatanın nerede meydana geldiğini belirleyin.
-
Genellikle
400
hata yanıtını arka uç sunucudan görürsünüz. Yani Hedef sunucudan alınan yanıt aşamasında400
hata yanıtını aşağıda gösterildiği gibi görürsünüz: -
İzdeki AX (Analytics Verileri Kaydı) simgesini tıklayarak isteğin yapıldığı hedef uç noktayı belirleyin.
- Protokolü, arka uç sunucusu ana makine takma adını ve bazen bağlantı noktası numarasını içeren target.url adresini not edin. Hedef URL için kullanılan bağlantı noktası
443
, ancak protokol HTTP'dir. - Yapılandırmayı anlamak için hedef uç noktanın tanımını inceleyin.
-
Arka uç sunucu ana makinesinin güvenli olduğunu ve
443
gibi güvenli bir bağlantı noktasında dinleme yaptığını doğrulayın. Protokolü<URL>
öğesindehttp
olarak kullanıyorsanız sorunun nedeni budur.Örnek hedef uç nokta yapılandırması:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TargetEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPTargetConnection> <Properties/> <URL>http://somehost.org:443/get</URL> </HTTPTargetConnection> </TargetEndpoint>
Yukarıdaki örnek, HTTP protokolünü kullandığınızı ancak kullanılan bağlantı noktasının
443
güvenli bağlantı noktası olduğunu göstermektedir. Bu, arka uç sunucusunun400 Bad Request
veThe plain HTTP request was sent to HTTPS port
hata mesajı ile yanıt vermesine neden olur.
Çözünürlük
-
Arka uç sunucunuz güvenli/TLS özellikliyse protokolü hedef uç noktanın
<URL>
öğesinde aşağıdaki örnekte gösterildiği gibihttps
olarak kullandığınızdan emin olun:Örnek hedef uç nokta yapılandırması:
<HTTPTargetConnection> <Properties/> <URL>https://somehost.org:443/get</URL> </HTTPTargetConnection>
-
Arka uç sunucunuz güvenli değilse:
443
gibi güvenli bağlantı noktası numarasından bahsetmeyin.- Arka uç sunucunuz güvenli olmayan standart bir bağlantı noktasında dinleme yapıyorsa bağlantı noktası numarasını belirtmeniz gerekmez
- Güvenli olmayan başka bir bağlantı noktası kullanıyorsanız bağlantı noktası numarasını belirtin. Örneğin:
9080
Örnek hedef uç nokta yapılandırması:
<HTTPTargetConnection> <Properties/> <URL>http://somehost.org/get</URL> </HTTPTargetConnection> or <HTTPTargetConnection> <Properties/> <URL>http://somehost.org:9080/get</URL> </HTTPTargetConnection>
Neden: Yanlış hedef sunucu yapılandırması
Hedef sunucu, SSL etkinleştirilmeden 443
gibi güvenli bir bağlantı noktasıyla yapılandırılmışsa bu sorun, Apigee Edge'in Mesaj İşleyicisinin HTTP isteklerini güvenli veya TLS ile yapılandırılmış bir hedef sunucuya göndermesine neden olur.
Teşhis
İzleme aracını kullanarak hatayı teşhis etmek için aşağıdaki adımları uygulayın:
- Etkilenen API Proxy'si için Apigee kullanıcı arayüzünde Trace'i etkinleştirin.
- API Proxy'sine istek gönderin.
400
yanıt koduyla başarısız olan API isteklerinden birini seçin.- Çeşitli aşamalar arasında gezinin ve hatanın nerede meydana geldiğini belirleyin.
-
Tipik olarak
400
hata yanıtının arka uç sunucudan geldiğini görürsünüz. Bu durumda,400
hata yanıtını Hedef sunucudan alınan aşamasında aşağıda gösterildiği gibi görürsünüz: -
İzdeki AX (Analytics Verileri Kaydı) simgesini tıklayarak isteğin yapıldığı hedef uç noktayı belirleyin.
-
Hedef uç nokta adını temsil eden target.name ifadesini not edin.
Yukarıdaki örnek izleme dosyasında target.name varsayılan'dır. Bu değer, bu istek için kullanılan hedef uç noktanın varsayılan olduğunu gösterir.
-
Yapılandırmayı anlamak için hedef uç noktanın tanımını inceleyin.
Örnek hedef uç nokta yapılandırması:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <TargetEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPTargetConnection> <Properties/> <LoadBalancer> <Server name="faulty-target"/> </LoadBalancer> </HTTPTargetConnection> </TargetEndpoint>
Yukarıdaki örnek hedef uç nokta yapılandırması,
faulty-target
adlı bir hedef sunucu kullandığınızı göstermektedir. -
Hedef sunucu adını belirledikten sonra, hedef sunucu yapılandırmasını kontrol etmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
- Edge kullanıcı arayüzü
- Management API'si
Edge kullanıcı arayüzü
- Apigee Edge > Yönetici > Ortamlar > Hedef Sunucular'a gidin.
- API proxy'sinden tanımlanan belirli hedef sunucuyu seçin ve Düzenle'yi tıklayın.
- Hedef sunucu için belirtilen bağlantı noktasını ve SSL bilgilerini doğrulayın.
-
Hedef sunucu güvenli bir bağlantı noktasıyla yapılandırılmışsa (örneğin:
443
) ancak SSL etkin değilse bu sorunun nedeni budur.Yukarıdaki ekran görüntüsünde görebileceğiniz gibi, kullanılan bağlantı noktası
443
ancak hedef sunucu yapılandırmasında bu bağlantı noktası için SSL etkinleştirilmedi. Bu durum, Apigee Edge'in Mesaj İşleyicisinin443
güvenli bağlantı noktasına HTTP istekleri göndermesine neden olur. Bu nedenle,The plain HTTP request was sent to HTTPS port
mesajıyla birlikte400 Bad Request
hatasını alıyorsunuz.
Management API'si
-
Belirli hedef sunucu yapılandırmasıyla ilgili ayrıntıları aşağıda gösterildiği gibi almak için Hedef sunucu alma API'sini çalıştırın:
Herkese Açık Bulut kullanıcısı:
curl -v 'https://api.enterprise.apigee.com/v1/organizations/ORG_NAME/environments/ENV_NAME>/targetservers/TARGET_SERVER_NAME' \ -H "Content-Type:application/xml" \ -H "Authorization:Bearer $TOKEN"
Private Cloud kullanıcısı:
curl -v 'http://MANAGEMENT_IP:8080/v1/organizations/ORG_NAME/environments/ENV_NAME/targetservers/TARGET_SERVER_NAME' \ -H "Content-Type:application/xml" \ -H "Authorization:Bearer $TOKEN"
- Hedef sunucu için belirtilen bağlantı noktasını ve SSL bilgilerini doğrulayın.
-
Hedef sunucu güvenli bir bağlantı noktasıyla yapılandırılmışsa (örneğin:
443
) ancakSSLInfo
bölümü tanımlanmamışsa veya etkinleştirilmemişse sorunun nedeni budur.Örnek hedef sunucu yapılandırması:
{ "host" : "somehost.org", "isEnabled" : true, "name" : "faulty-target", "port" : 443 }
Yukarıdaki örnek çıkışta, hedef bağlantı için kullanılan bağlantı noktasının
443
olduğunu ancakSSLInfo
yapılandırma bloğu olmadığını görüyoruz.Bu durum, Apigee Edge'in Mesaj İşleyicisinin HTTP isteklerini
443
güvenli bağlantı noktasına göndermesine neden olur. Bu nedenle,The plain HTTP request was sent to HTTPS port
mesajıyla birlikte400 Bad Request
hatasını alırsınız.
Çözünürlük
Hedef sunucunuz güvenliyse veya TLS yapılandırılmışsa ilgili hedef sunucu için SSL'yi etkinleştirmeniz gerekir.
Bunu, aşağıdaki seçeneklerden birini kullanarak yapabilirsiniz:
- Edge kullanıcı arayüzü
- Management API'si
Edge kullanıcı arayüzü
- Edge Kullanıcı Arayüzü > Yönetici > Ortamlar > Hedef Sunucular'da hedef sunucuya gidin.
- İlgili hedef sunucuyu seçin ve Düzenle'yi tıklayın.
- Hedef sunucunuz güvenliyse ve
443
gibi bir bağlantı noktası kullanıyorsa SSL seçeneğinin yanındaki onay kutusunu işaretleyerek SSL'yi etkinleştirin. - Truststore, Ciphers ve Protokoller'i yapılandırın. (Yalnızca gerekliyse)
Management API'si
Hedef sunucu yapılandırmasını güncelleme belgelerinde açıklandığı gibi, hedef sunucuyu yapılandırmak için Management API'yi kullanın.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uyguladıktan sonra da 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'si adı
- Hatayı yeniden oluşturmak için curl komutunu tamamlayın
- İzleme aracı çıkışı (başarısız istek için yakalayabildiyseniz)
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Tam hata mesajı gözlemlendi
- Ortam adı
- API proxy paketi
- Hedef sunucu tanımı (uç noktanızda hedef sunucu kullanıyorsanız)
- İzleme aracı çıkışı (başarısız istek için yakalayabildiyseniz)