Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Belirti
İstemci uygulaması şu mesajla bir HTTP 400 Bad Request
yanıtı alır:
The plain HTTP request was sent to HTTPS port
.
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ı:
<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 tarafından yapılandırılmış bir sanal ana makineye yönelik HTTP isteği | İstemci, TLS tarafından yapılandırılmış bir sanal ana makineye HTTP isteği gönderir | Edge Herkese Açık ve Private Cloud kullanıcıları |
TLS yapılandırılmış hedef uç noktasına yönelik HTTP isteği | Hedef uç noktadaki TLS'nin etkin olduğu arka uç sunucusuna yapılan HTTP isteği. | Edge Herkese Açık 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 etkin değil. |
Edge Herkese Açık ve Private Cloud kullanıcıları |
Neden: TLS tarafından yapılandırılmış bir sanal ana makineye gönderilen HTTP isteği
Bu hata, bir istemci Apigee'de bir API'ye bağlanmaya çalışırken ve bahsedilen sanal ana makine, SSL kullanacak şekilde yapılandırılır ve bunun yerine bir HTTP isteği alır.
Teşhis
Bu sorun Northbound uç nokta ve API istekleri, Bu hata mesajları NGINX yönlendiricisine kaydedilmez. erişim günlükleri. Bu nedenle, söz konusu istekler API Monitoring ve izin verir.
-
API isteğinizi doğrulayın ve yalnızca
443
güvenli bağlantı noktasından istekleri kabul edecek şekilde yapılandırıldı. Ö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 ana makine takma adına bir HTTP isteğinde bulunulduğuna dikkat edin
443
güvenli bağlantı noktasındamyorg-test.apigee.net
. Bu durum, kampanya400 Bad Request
hata.
Çözünürlük
İstemcinin HTTP yerine HTTP kullanıp kullanmadığını doğrulamanız ve doğru isteği aşağıda gösterilmiştir:
Ö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 tarafından yapılandırılmış bir hedef uç noktaya yapılan HTTP isteği
Bu hata, TLS'nin etkin olduğu bir arka uca gönderilen HTTP isteklerini yanlış yapılandırdığınızda ortaya çıkar bir API Proxy'sinin hedef uç noktasındaki sunucuyu belirtir.
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önderme.
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 oluştuğunu belirleyin.
-
Genellikle
400
hata yanıtının arka uç sunucusundan geldiğini görürsünüz. Yani400
hata yanıtını Yanıt alındı aşamasında görürsünüz aşağıda gösterildiği gibi hedef sunucudan kaldırın: -
AX simgesini tıklayarak isteğin yapıldığı hedef uç noktayı belirleyin (Analytics Verileri Kaydedildi) simgesini tıklayın.
- Protokolü, arka uç sunucu ana makine takma adını ve arka uç sunucu takma adını içeren target.url
ve bazen bağlantı noktası numarası olabilir. Bağlantı noktası
hedef URL
443
, ancak protokol HTTP. - 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 bu 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 örnekte, HTTP protokolünü kullandığınız ancak kullanılan bağlantı noktasının güvenli olduğu gösterilmektedir
443
numaralı bağlantı noktası. Bu, arka uç sunucusunun400 Bad Request
ve hata mesajıThe plain HTTP request was sent to HTTPS port
.
Çözünürlük
-
Arka uç sunucunuz güvenli/TLS etkin ise protokolü Şurada gösterildiği gibi hedef uç noktanın
<URL>
öğesindehttps
aşağıdaki örneği inceleyin:Ö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 sizi dinliyorsa bağlantı noktası numarasını standart güvenli olmayan bağlantı noktası
- 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, etkinleştirmeden 443
gibi bir güvenli bağlantı noktasıyla yapılandırılırsa
Bu durumda Apigee Edge'in Mesaj İşlemcisi'nin HTTP isteklerinde bulunan bir güvenlik ya da
Bu soruna neden olan, TLS tarafından yapılandırılmış hedef sunucu
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önderme.
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 oluştuğunu belirleyin.
-
Genellikle
400
hata yanıtının arka uç sunucusundan geldiğini görürsünüz. Yani Yanıt alındı aşamasında400
hata yanıtını görürsünüz. aşağıda gösterildiği gibi hedef sunucudan kaldırın: -
AX simgesini tıklayarak isteğin yapıldığı hedef uç noktayı belirleyin (Analytics Verileri Kaydedildi) simgesini tıklayın.
-
Hedef uç nokta adını temsil eden target.name bilgisini not edin.
Yukarıdaki örnek izleme dosyasında target.name default'tur. Bu, bu istek için kullanılan hedef uç noktanın varsayılan olduğunu unutmayın.
-
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ı, bir hedef sunucu kullandığınızı gösteriyor
faulty-target
olarak adlandırıldı. -
Hedef sunucu adını belirledikten sonra, aşağıdaki yöntemlerden birini kullanarak hedef sunucu yapılandırmasını kontrol edin:
- Edge kullanıcı arayüzü
- Yönetim API'si
Edge kullanıcı arayüzü
- Apigee Edge'e gidin > Yönetici > Ortamlar > Hedef Sunucular.
- API proxy'sinden tanımlanan hedef sunucuyu seçip Düzenle.
- 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 sorunun nedeni budur.Yukarıdaki ekran görüntüsünde görebileceğiniz gibi, kullanılan bağlantı noktası
443
, ancak SSL değil hedef sunucu yapılandırmasında söz konusu bağlantı noktası için etkinleştirilmelidir. Bu da Apigee Edge'in mesajının İşlemcinin443
güvenli bağlantı noktasına HTTP istekleri göndermesi gerekir. Bu nedenle,The plain HTTP request was sent to HTTPS port
mesajını içeren400 Bad Request
hatası.
Yönetim API'si
-
Şunu yürütün: Belirli bir hedef sunucu yapılandırmasıyla ilgili ayrıntıları almak için hedef sunucu API'sini alın aşağıdaki gibidir:
Herkese açık Cloud 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 bir güvenli bağlantı noktasıyla yapılandırılmışsa (örneğin:
443
), ancakSSLInfo
bölümü tanımlı değilse veya etkinleştirilmediyse, çözmüştük.Ö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
, ancakSSLInfo
yapılandırma bloğu yok.Bu, Apigee Edge'in Mesaj İşlemcisi'nin güvenli bağlantı noktasına HTTP istekleri göndermesine neden olur
443
Bu nedenle, şu mesajla birlikte400 Bad Request
hatası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, ilgili sunucu için SSL'yi etkinleştirmeniz gerekir yardımcı olur.
Aşağıdaki seçeneklerden birini kullanarak bunu yapabilirsiniz:
- Edge kullanıcı arayüzü
- Yönetim API'si
Edge kullanıcı arayüzü
- Edge UI > Yönetici > Ortamlar > Hedef Sunucular.
- İ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'yi SSL seçeneğinin yanındaki onay kutusunu işaretleyin. - Truststore, Ciphers ve Protokolleri yapılandırın. (Yalnızca gerekirse)
Yönetim API'si
Hedef sunucuyu şurada açıklandığı gibi yapılandırmak için management API'yi kullanın: Hedef sunucu yapılandırması dokümanlarını güncelleyin.
Teşhis bilgileri toplanmalıdır
Yukarıdaki talimatları uygulamanıza rağmen sorun devam ederse aşağıdaki 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 isteği yakalayabildiyseniz)
- Private Cloud kullanıcısıysanız aşağıdaki bilgileri sağlayın:
- Tam hata mesajı görüntülendi
- Ortam adı
- API proxy paketi
- Hedef sunucu tanımı (uç noktanızda hedef sunucu kullanıyorsanız)
- İzleme aracı çıkışı (başarısız isteği yakalayabildiyseniz)