यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं
Apigee X दस्तावेज़. info
समस्या का ब्यौरा
क्लाइंट ऐप्लिकेशन को HTTP 400 Bad Request रिस्पॉन्स मिलता है. साथ ही, यह मैसेज भी मिलता है:
The plain HTTP request was sent to HTTPS port.
गड़बड़ी का मैसेज
क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:
HTTP/1.1 400 Bad Request
इसके बाद, एचटीएमएल का यह गड़बड़ी वाला पेज दिखता है:
<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>
संभावित कारण
| वजह | ब्यौरा | समस्या हल करने के ये निर्देश, इन लोगों के लिए हैं |
|---|---|---|
| TLS के लिए कॉन्फ़िगर किए गए वर्चुअल होस्ट को भेजा गया एचटीटीपी अनुरोध | क्लाइंट, TLS के लिए कॉन्फ़िगर किए गए वर्चुअल होस्ट को एचटीटीपी अनुरोध भेजता है | Edge Public और Private Cloud के उपयोगकर्ता |
| TLS के लिए कॉन्फ़िगर किए गए टारगेट एंडपॉइंट को भेजा गया एचटीटीपी अनुरोध | टारगेट एंडपॉइंट में, TLS की सुविधा वाले बैकएंड सर्वर को एचटीटीपी अनुरोध भेजा गया. | Edge Public और Private Cloud के उपयोगकर्ता |
| टारगेट सर्वर का गलत कॉन्फ़िगरेशन | टारगेट सर्वर को सुरक्षित पोर्ट 443 के साथ कॉन्फ़िगर किया गया है, लेकिन एसएसएल चालू नहीं है. |
Edge Public और Private Cloud के उपयोगकर्ता |
वजह: TLS के लिए कॉन्फ़िगर किए गए वर्चुअल होस्ट को भेजा गया एचटीटीपी अनुरोध
यह गड़बड़ी तब होती है, जब कोई क्लाइंट Apigee पर किसी एपीआई से कनेक्ट करने की कोशिश कर रहा हो और बताया गया वर्चुअल होस्ट, एसएसएल का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया हो. हालांकि, उसे एचटीटीपी अनुरोध मिलता है.
संक्रमण की जांच
यह समस्या Northbound एंडपॉइंट पर होती है. साथ ही, एपीआई के अनुरोध, क्लाइंट ऐप्लिकेशन और राऊटर के बीच एंट्री पॉइंट इंटरैक्शन पर पूरे नहीं हो पाते. इसलिए, इन गड़बड़ी के मैसेज को NGINX राऊटर के ऐक्सेस लॉग में लॉग नहीं किया जाता. इसलिए, इन अनुरोधों को एपीआई की निगरानी और Trace टूल जैसे टूल में कैप्चर नहीं किया जाएगा.
-
अपने एपीआई अनुरोध की पुष्टि करें और देखें कि आपने किसी ऐसे होस्ट एलियास के लिए एचटीटीपी अनुरोध भेजा है जिसे सिर्फ़ सुरक्षित पोर्ट
443पर अनुरोध स्वीकार करने के लिए कॉन्फ़िगर किया गया है या नहीं. अगर ऐसा है, तो यह समस्या की वजह है.एपीआई के गलत अनुरोध का सैंपल:
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>
- ऊपर दिए गए अनुरोध के सैंपल में, ध्यान दें कि सुरक्षित पोर्ट
443पर होस्ट एलियासmyorg-test.apigee.netको एचटीटीपी अनुरोध भेजा गया है. यह400 Bad Requestगड़बड़ी की वजह है.
रिज़ॉल्यूशन
आपको यह पुष्टि करनी होगी कि क्लाइंट, एचटीटीपीएस के बजाय एचटीटीपी का इस्तेमाल कर रहा है या नहीं. साथ ही, नीचे दिखाए गए तरीके से सही अनुरोध भेजना होगा:
एपीआई अनुरोध का सैंपल:
curl https://org-test.apigee.net:443/400-demo
या
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
वजह: TLS के लिए कॉन्फ़िगर किए गए टारगेट एंडपॉइंट को भेजा गया एचटीटीपी अनुरोध
यह गड़बड़ी तब होती है, जब आपने एपीआई प्रॉक्सी के टारगेट एंडपॉइंट में, TLS की सुविधा वाले बैकएंड सर्वर को भेजे जाने वाले एचटीटीपी अनुरोधों को गलत तरीके से कॉन्फ़िगर किया हो.
संक्रमण की जांच
Trace टूल का इस्तेमाल करके, गड़बड़ी की जांच करने के लिए यह तरीका अपनाएं:
- समस्या वाली एपीआई प्रॉक्सी के लिए, Apigee यूज़र इंटरफ़ेस (यूआई) में Trace चालू करें.
- एपीआई प्रॉक्सी को अनुरोध भेजें.
- एपीआई के उन अनुरोधों में से कोई एक अनुरोध चुनें जो
400रिस्पॉन्स कोड के साथ पूरे नहीं हो पाए. - अलग-अलग चरणों में जाकर, यह पता लगाएं कि गड़बड़ी कहां हुई.
-
आम तौर पर, आपको बैकएंड सर्वर से
400गड़बड़ी वाला रिस्पॉन्स दिखेगा. इसका मतलब है कि आपको400गड़बड़ी वाला रिस्पॉन्स, टारगेट सर्वर से मिला रिस्पॉन्स चरण में दिखेगा. जैसा कि यहां दिखाया गया है:
-
यह पता लगाएं कि अनुरोध किस टारगेट एंडपॉइंट के लिए किया गया था. इसके लिए, ट्रेस में AX (रिकॉर्ड किया गया Analytics डेटा) आइकॉन पर क्लिक करें.

- target.url नोट करें. इसमें प्रोटोकॉल, बैकएंड सर्वर का होस्ट एलियास,
और कभी-कभी पोर्ट नंबर शामिल होता है. टारगेट यूआरएल के लिए इस्तेमाल किया गया पोर्ट
443है, लेकिन प्रोटोकॉल एचटीटीपी है. - कॉन्फ़िगरेशन को समझने के लिए, टारगेट एंडपॉइंट की परिभाषा देखें.
-
पुष्टि करें कि बैकएंड सर्वर का होस्ट सुरक्षित है और वह
443जैसे सुरक्षित पोर्ट पर सुनता है. अगर<URL>एलिमेंट में प्रोटोकॉल के तौर परhttpका इस्तेमाल किया जा रहा है, तो यह समस्या की वजह है.टारगेट एंडपॉइंट के कॉन्फ़िगरेशन का सैंपल:
<?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>ऊपर दिए गए उदाहरण में दिखाया गया है कि एचटीटीपी प्रोटोकॉल का इस्तेमाल किया जा रहा है, लेकिन इस्तेमाल किया गया पोर्ट, सुरक्षित पोर्ट
443है. इस वजह से, बैकएंड सर्वर400 Bad Requestऔर गड़बड़ी के मैसेजThe plain HTTP request was sent to HTTPS portके साथ जवाब देता है.
रिज़ॉल्यूशन
-
अगर आपका बैकएंड सर्वर सुरक्षित है या TLS की सुविधा वाला है, तो पक्का करें कि टारगेट एंडपॉइंट के
<URL>एलिमेंट में प्रोटोकॉल के तौर परhttpsका इस्तेमाल किया गया हो. जैसा कि यहां दिखाया गया है:टारगेट एंडपॉइंट के कॉन्फ़िगरेशन का सैंपल:
<HTTPTargetConnection> <Properties/> <URL>https://somehost.org:443/get</URL> </HTTPTargetConnection> -
अगर आपका बैकएंड सर्वर सुरक्षित नहीं है, तो:
443जैसे सुरक्षित पोर्ट नंबर का ज़िक्र न करें.- अगर आपका बैकएंड सर्वर, स्टैंडर्ड सुरक्षित पोर्ट पर सुनता है, तो आपको पोर्ट नंबर का ज़िक्र करने की ज़रूरत नहीं है
- अगर किसी दूसरे सुरक्षित पोर्ट का इस्तेमाल किया जा रहा है, तो पोर्ट नंबर का ज़िक्र करें. उदाहरण के लिए:
9080
टारगेट एंडपॉइंट के कॉन्फ़िगरेशन का सैंपल:
<HTTPTargetConnection> <Properties/> <URL>http://somehost.org/get</URL> </HTTPTargetConnection> or <HTTPTargetConnection> <Properties/> <URL>http://somehost.org:9080/get</URL> </HTTPTargetConnection>
वजह: टारगेट सर्वर का गलत कॉन्फ़िगरेशन
अगर टारगेट सर्वर को 443 जैसे सुरक्षित पोर्ट के साथ कॉन्फ़िगर किया गया है, लेकिन
एसएसएल चालू नहीं किया गया है, तो Apigee Edge का मैसेज प्रोसेसर, सुरक्षित या
TLS के लिए कॉन्फ़िगर किए गए टारगेट सर्वर को एचटीटीपी अनुरोध भेजता है. इससे यह समस्या होती है.
संक्रमण की जांच
Trace टूल का इस्तेमाल करके, गड़बड़ी की जांच करने के लिए यह तरीका अपनाएं:
- समस्या वाली एपीआई प्रॉक्सी के लिए, Apigee यूज़र इंटरफ़ेस (यूआई) में Trace चालू करें.
- एपीआई प्रॉक्सी को अनुरोध भेजें.
- एपीआई के उन अनुरोधों में से कोई एक अनुरोध चुनें जो
400रिस्पॉन्स कोड के साथ पूरे नहीं हो पाए. - अलग-अलग चरणों में जाकर, यह पता लगाएं कि गड़बड़ी कहां हुई.
-
आम तौर पर, आपको बैकएंड सर्वर से
400गड़बड़ी वाला रिस्पॉन्स दिखेगा. इसका मतलब है कि आपको400गड़बड़ी वाला रिस्पॉन्स टारगेट सर्वर से मिला रिस्पॉन्स चरण में दिखेगा. जैसा कि यहां दिखाया गया है:
-
यह पता लगाएं कि अनुरोध किस टारगेट एंडपॉइंट के लिए किया गया था. इसके लिए, ट्रेस में AX (रिकॉर्ड किया गया Analytics डेटा) आइकॉन पर क्लिक करें.

-
target.name नोट करें. यह टारगेट एंडपॉइंट के नाम को दिखाता है.
ऊपर दिए गए ट्रेस फ़ाइल के उदाहरण में, target.name default है. इससे पता चलता है कि इस अनुरोध के लिए, डिफ़ॉल्ट टारगेट एंडपॉइंट का इस्तेमाल किया गया है.
-
कॉन्फ़िगरेशन को समझने के लिए, टारगेट एंडपॉइंट की परिभाषा देखें.
टारगेट एंडपॉइंट के कॉन्फ़िगरेशन का सैंपल:
<?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>टारगेट एंडपॉइंट के ऊपर दिए गए कॉन्फ़िगरेशन के सैंपल से पता चलता है कि नाम के
faulty-targetटारगेट सर्वर का इस्तेमाल किया जा रहा है. -
टारगेट सर्वर का नाम मिलने के बाद, टारगेट सर्वर के कॉन्फ़िगरेशन की जांच करने के लिए, इनमें से कोई एक तरीका इस्तेमाल किया जा सकता है:
- Edge यूज़र इंटरफ़ेस (यूआई)
- Management API
Edge यूज़र इंटरफ़ेस (यूआई)
- Apigee Edge > एडमिन > एनवायरमेंट > टारगेट सर्वर पर जाएं.
- एपीआई प्रॉक्सी से पहचाने गए टारगेट सर्वर को चुनें और बदलाव करें पर क्लिक करें.
- टारगेट सर्वर के लिए तय किया गया पोर्ट और एसएसएल की जानकारी देखें.
-
अगर टारगेट सर्वर को सुरक्षित पोर्ट (उदाहरण के लिए:
443) के साथ कॉन्फ़िगर किया गया है, लेकिन एसएसएल चालू नहीं है, तो यह समस्या की वजह है.
ऊपर दिए गए स्क्रीनशॉट में देखा जा सकता है कि इस्तेमाल किया गया पोर्ट
443है, लेकिन टारगेट सर्वर के कॉन्फ़िगरेशन में उस पोर्ट के लिए एसएसएल चालू नहीं है. इस वजह से, Apigee Edge का मैसेज प्रोसेसर, सुरक्षित पोर्ट443को एचटीटीपी अनुरोध भेजता है. इसलिए, आपको गड़बड़ी400 Bad Requestमिलती है. साथ ही, यह मैसेज भी मिलता है:The plain HTTP request was sent to HTTPS port.
Management API
-
किसी खास टारगेट सर्वर के कॉन्फ़िगरेशन के बारे में जानकारी पाने के लिए, Get target server API को एक्ज़ीक्यूट करें. जैसा कि यहां दिखाया गया है:
Public Cloud का उपयोगकर्ता:
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 का उपयोगकर्ता:
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"
- टारगेट सर्वर के लिए तय किया गया पोर्ट और एसएसएल की जानकारी देखें.
-
अगर टारगेट सर्वर को सुरक्षित पोर्ट (उदाहरण के लिए:
443) के साथ कॉन्फ़िगर किया गया है, लेकिनSSLInfoसेक्शन तय नहीं किया गया है या चालू नहीं है, तो यह समस्या की वजह है.टारगेट सर्वर के कॉन्फ़िगरेशन का सैंपल:
{ "host" : "somehost.org", "isEnabled" : true, "name" : "faulty-target", "port" : 443 }ऊपर दिए गए सैंपल आउटपुट में, हम देख सकते हैं कि टारगेट कनेक्शन के लिए इस्तेमाल किया गया पोर्ट
443है, लेकिन कोईSSLInfoकॉन्फ़िगरेशन ब्लॉक नहीं है.इस वजह से, Apigee Edge का मैसेज प्रोसेसर, सुरक्षित पोर्ट
443को एचटीटीपी अनुरोध भेजता है. इसलिए, आपको400 Bad Requestगड़बड़ी मिलती है. साथ ही, यह मैसेज भी मिलता है:The plain HTTP request was sent to HTTPS port.
रिज़ॉल्यूशन
अगर आपका टारगेट सर्वर सुरक्षित है या TLS के लिए कॉन्फ़िगर किया गया है, तो आपको उस विशिष्ट टारगेट सर्वर के लिए एसएसएल चालू करना होगा.
इसके लिए, इनमें से कोई एक विकल्प इस्तेमाल किया जा सकता है:
- Edge यूज़र इंटरफ़ेस (यूआई)
- Management API
Edge यूज़र इंटरफ़ेस (यूआई)
- Edge यूज़र इंटरफ़ेस (यूआई) > एडमिन > एनवायरमेंट > टारगेट सर्वर पर जाकर, टारगेट सर्वर पर जाएं.
- टारगेट सर्वर को चुनें और बदलाव करें पर क्लिक करें.
- अगर आपका टारगेट सर्वर सुरक्षित है और
443जैसे पोर्ट का इस्तेमाल करता है, तो एसएसएल विकल्प के बगल में मौजूद चेक बॉक्स को चुनकर, एसएसएल चालू करें. - ट्रस्टस्टोर, सिफ़र, और प्रोटोकॉल कॉन्फ़िगर करें. (सिर्फ़ तब, जब ज़रूरत हो)
Management API
टारगेट सर्वर को कॉन्फ़िगर करने के लिए, मैनेजमेंट एपीआई का इस्तेमाल करें. इसके बारे में टारगेट सर्वर के कॉन्फ़िगरेशन को अपडेट करना दस्तावेज़ में बताया गया है.
गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो गड़बड़ी की यह जानकारी इकट्ठा करें. इसके बाद, Apigee Edge की सहायता टीम से संपर्क करें.
- अगर आप Public Cloud के उपयोगकर्ता हैं, तो यह जानकारी दें:
- संगठन का नाम
- परिवेश का नाम
- एपीआई प्रॉक्सी का नाम
- गड़बड़ी को फिर से दिखाने के लिए, पूरा कर्ल कमांड
- Trace टूल का आउटपुट (अगर आपने गड़बड़ी वाले अनुरोध के लिए इसे कैप्चर किया है)
- अगर आप Private Cloud के उपयोगकर्ता हैं, तो यह जानकारी दें:
- गड़बड़ी का पूरा मैसेज
- परिवेश का नाम
- एपीआई प्रॉक्सी बंडल
- टारगेट सर्वर की परिभाषा (अगर अपने एंडपॉइंट में टारगेट सर्वर का इस्तेमाल किया जा रहा है)
- Trace टूल का आउटपुट (अगर आपने गड़बड़ी वाले अनुरोध के लिए इसे कैप्चर किया है)