Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Belirti
İstemci uygulaması, HTTP 400 Bad Request yanıtını The plain HTTP request was sent to HTTPS port mesajıyla birlikte 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ı gösterilir:
<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 | Aşağıdaki ürünler için geçerli sorun giderme talimatları |
|---|---|---|
| TLS yapılandırılmış bir sanal ana makineye HTTP isteği | İstemci, TLS yapılandırılmış bir sanal ana makineye HTTP isteği gönderir. | Edge Public ve Private Cloud kullanıcıları |
| TLS yapılandırılmış bir hedef uç noktasına HTTP isteği | Hedef uç noktasında TLS'nin etkin olduğu bir arka uç sunucusuna HTTP isteği gönderildi. | Edge Public ve Private Cloud kullanıcıları |
| Yanlış hedef sunucu yapılandırması | Hedef sunucu 443 güvenli bağlantı noktasıyla yapılandırılmış ancak SSL etkinleştirilmemiş. |
Edge Public ve Private Cloud kullanıcıları |
Neden: TLS yapılandırılmış bir sanal ana makineye HTTP isteği gönderiliyor.
Bu hata, bir istemci Apigee'deki bir API'ye bağlanmaya çalışırken ve söz konusu sanal ana makine SSL kullanacak şekilde yapılandırılmışken bunun yerine bir HTTP isteği aldığında oluşur.
Teşhis
Bu sorun Northbound uç noktasında meydana geldiği ve API istekleri, istemci uygulaması ile yönlendirici arasındaki giriş noktası etkileşiminde 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 yalnızca güvenli bağlantı noktası
443üzerinden istekleri kabul edecek şekilde yapılandırılmış bir ana makine takma adı için HTTP isteği gönderip göndermediğinizi kontrol edin. Bu durumda sorun bundan kaynaklanıyor demektir.Hatalı API isteği örneğ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, güvenli bağlantı noktası
443üzerinde ana makine takma adınamyorg-test.apigee.netbir HTTP isteği gönderildiğini unutmayın. Bu durum,400 Bad Requesthatasına neden olur.
Çözünürlük
İstemcinin HTTPS yerine HTTP kullandığı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 yapılandırılmış bir hedef uç noktasına HTTP isteği gönderilmesi
Bu hata, bir API proxy'sinin hedef uç noktasında TLS etkin bir arka uç sunucusuna HTTP isteklerini yanlış yapılandırdıysanız oluşur.
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 İzleme'yi etkinleştirin.
- API proxy'sine istek gönderme
400yanıt koduyla başarısız olan API isteklerinden birini seçin.- Çeşitli aşamalar arasında gezinin ve hatanın nerede oluştuğunu belirleyin.
-
Genellikle arka uç sunucusundan
400hata yanıtı gelir. Yani, aşağıdaki örnekte gösterildiği gibi Hedef sunucudan yanıt alındı aşamasında400hata yanıtını görürsünüz:
-
İzleme işleminde AX (Analytics Verileri Kaydedildi) 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'ye dikkat edin. Hedef URL için kullanılan bağlantı noktası
443ancak protokol HTTP. - Yapılandırmayı anlamak için hedef uç noktanın tanımını inceleyin.
-
Arka uç sunucusu ana makinesinin güvenli olduğunu ve
443gibi güvenli bir bağlantı noktasında dinleme yaptığını doğrulayın.<URL>öğesinde protokolühttpolarak kullanıyorsanız bu sorunun nedeni budur.Hedef uç nokta yapılandırması örneği:
<?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 örnekte HTTP protokolünü kullandığınız ancak kullanılan bağlantı noktasının güvenli bağlantı noktası
443olduğu gösterilmektedir. Bu durum, arka uç sunucusunun400 Bad Requestile yanıt vermesine veThe plain HTTP request was sent to HTTPS porthata mesajının gösterilmesine neden olur.
Çözünürlük
-
Arka uç sunucunuz güvenli/TLS etkinse aşağıdaki örnekte gösterildiği gibi hedef uç noktanın
<URL>öğesinde protokolühttpsolarak kullandığınızdan emin olun:Hedef uç nokta yapılandırması örneği:
<HTTPTargetConnection> <Properties/> <URL>https://somehost.org:443/get</URL> </HTTPTargetConnection> -
Arka uç sunucunuz güvenli değilse:
443gibi güvenli bağlantı noktası numarasından bahsetmeyin.- Arka uç sunucunuz standart olmayan güvenli bir bağlantı noktasını dinliyorsa bağlantı noktası numarasını hiç belirtmeniz gerekmez.
- Güvenli olmayan başka bir bağlantı noktası kullanıyorsanız bağlantı noktası numarasını belirtin. Örneğin:
9080
Hedef uç nokta yapılandırması örneği:
<HTTPTargetConnection> <Properties/> <URL>http://somehost.org/get</URL> </HTTPTargetConnection> or <HTTPTargetConnection> <Properties/> <URL>http://somehost.org:9080/get</URL> </HTTPTargetConnection>
Neden: Hedef sunucu yapılandırması yanlış
Hedef sunucu, SSL etkinleştirilmeden 443 gibi güvenli bir bağlantı noktasıyla yapılandırılmışsa bu durum, Apigee Edge'in mesaj işlemcisinin güvenli veya TLS yapılandırılmış bir hedef sunucuya HTTP istekleri göndermesine neden olarak bu soruna yol açar.
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 İzleme'yi etkinleştirin.
- API proxy'sine istek gönderme
400yanıt koduyla başarısız olan API isteklerinden birini seçin.- Çeşitli aşamalar arasında gezinin ve hatanın nerede oluştuğunu belirleyin.
-
Genellikle arka uç sunucusundan gelen
400hata yanıtını görürsünüz. Yani, aşağıdaki örnekte gösterildiği gibi Hedef sunucudan yanıt alındı aşamasında400hata yanıtını görürsünüz:
-
İzleme işleminde AX (Analytics Verileri Kaydedildi) simgesini tıklayarak isteğin yapıldığı hedef uç noktayı belirleyin.

-
Hedef uç nokta adını temsil eden target.name değerini not edin.
Yukarıdaki örnek izleme dosyasında target.name değeri default'tur. 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.
Hedef uç nokta yapılandırması örneği:
<?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-targetadlı bir hedef sunucu kullandığınızı gösterir. -
Hedef sunucu adını aldıktan sonra hedef sunucu yapılandırmasını kontrol etmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
- Edge kullanıcı arayüzü
- Yönetim API'si
Edge kullanıcı arayüzü
- Apigee Edge > Yönetici > Ortamlar > Hedef Sunucular'a gidin.
- API proxy'sinden tanımlanan 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 (örneğin:
443) yapılandırılmışsa ancak SSL etkinleştirilmemişse bu sorunun nedeni budur.
Yukarıdaki ekran görüntüsünde görebileceğiniz gibi, kullanılan bağlantı noktası
443ancak hedef sunucu yapılandırmasında bu bağlantı noktası için SSL etkinleştirilmemiş. Bu durum, Apigee Edge'in Mesaj İşleyicisi'nin güvenli bağlantı noktasına443HTTP istekleri göndermesine neden olur. Bu nedenle,The plain HTTP request was sent to HTTPS portmesajıyla birlikte400 Bad Requesthatasını alırsınız.
Yönetim API'si
-
Belirli hedef sunucu yapılandırmasıyla ilgili ayrıntıları almak için aşağıdaki gibi Get target server API'sini yürütü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 (örneğin:
443) yapılandırılmışsa ancakSSLInfobölümü tanımlanmamışsa veya etkinleştirilmemişse bu sorun bundan kaynaklanıyor olabilir.Hedef sunucu yapılandırması örneği:
{ "host" : "somehost.org", "isEnabled" : true, "name" : "faulty-target", "port" : 443 }Yukarıdaki örnek çıktıda, hedef bağlantı için kullanılan bağlantı noktasının
443olduğu ancakSSLInfoyapılandırma bloğunun olmadığı görülüyor.Bu durum, Apigee Edge'in Mesaj İşleyicisi'nin güvenli bağlantı noktasına HTTP istekleri göndermesine neden olur
443. Bu nedenle,400 Bad Requesthata mesajını alırsınız.The plain HTTP request was sent to HTTPS port.
Çözünürlük
Hedef sunucunuz güvenliyse veya TLS yapılandırılmışsa belirli hedef sunucu için SSL'yi etkinleştirmeniz gerekir.
Bu işlemi aşağıdaki seçeneklerden birini kullanarak yapabilirsiniz:
- Edge kullanıcı arayüzü
- Yönetim 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
443gibi bir bağlantı noktası kullanıyorsa SSL seçeneğinin yanındaki onay kutusunu işaretleyerek SSL'yi etkinleştirin. - Truststore, Ciphers ve Protocols'u yapılandırın. (Yalnızca gerekliyse)
Yönetim API'si
Hedef sunucuyu yapılandırmak için yönetim API'sini kullanın. Bu işlem, � Hedef sunucu yapılandırmasını güncelleme dokümanında açıklanmıştır.
Teşhis bilgilerini toplamalıdır
Yukarıdaki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayın ve 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'sinin adı
- Hatayı yeniden oluşturmak için kullanılan curl komutunun tamamı
- İzleme aracı çıkışı (başarısız olan istek için yakalayabildiyseniz)
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Gözlemlenen hata mesajının tamamı
- Ortam adı
- API proxy paketi
- Hedef sunucu tanımı (uç noktanızda hedef sunucu kullanıyorsanız)
- İzleme aracı çıkışı (başarısız olan istek için yakalayabildiyseniz)