Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
एचटीटीपी की खास जानकारी आरएफ़सी 7230 के सेक्शन 3.2.2: फ़ील्ड ऑर्डर के मुताबिक, Apigee Edge की यह उम्मीद है कि क्लाइंट या बैकएंड सर्वर से मिलने वाले एचटीटीपी रिस्पॉन्स में, एक ही हेडर, एक जैसी या अलग-अलग वैल्यू के साथ एक से ज़्यादा बार पास न किया जाए. ऐसा तब तक नहीं किया जा सकता, जब तक किसी खास हेडर में कोई अपवाद न हो और उसे डुप्लीकेट करने की अनुमति हो.
डिफ़ॉल्ट रूप से, Apigee Edge, ज़्यादातर एचटीटीपी हेडर पर डुप्लीकेट और एक से ज़्यादा वैल्यू को भेजने की अनुमति देता है. हालांकि, इससे कुछ ऐसे हेडर इस्तेमाल करने की अनुमति नहीं मिलती जो ऐसे हेडर जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू रखने की अनुमति नहीं है में मौजूद है. इसलिए:
- अगर क्लाइंट किसी खास हेडर के साथ एक से ज़्यादा बार या एचटीटीपी हेडर के लिए एक से ज़्यादा वैल्यू वाला एचटीटीपी अनुरोध भेजता है, तो आपको गड़बड़ी कोड
protocol.http.DuplicateHeader
के साथ400 Bad Request
मिलेगा. हालांकि, ऐसा तब होता है, जब Apigee Edge में, डुप्लीकेट या एक से ज़्यादा वैल्यू होने की अनुमति नहीं होती. - इसी तरह, अगर बैकएंड सर्वर एक से ज़्यादा बार खास हेडर के साथ एचटीटीपी रिस्पॉन्स भेजता है या उन एचटीटीपी हेडर के लिए एक से ज़्यादा वैल्यू भेजता है जिनके लिए Apigee Edge में डुप्लीकेट या एक से ज़्यादा वैल्यू की अनुमति नहीं है, तो आपको गड़बड़ी कोड
protocol.http.DuplicateHeader
के साथ502 Bad Gateway
मिलेगा
इन गड़बड़ियों को ठीक करने के लिए, सुझाया गया तरीका है कि क्लाइंट ऐप्लिकेशन और बैकएंड सर्वर को ठीक करें, ताकि डुप्लीकेट हेडर न भेजे जाएं. साथ ही, आरएफ़सी 7230, सेक्शन 3.2.2: फ़ील्ड ऑर्डर का पालन करें, जैसा कि समस्या हल करने वाली इन प्लेबुक में बताया गया है:
हालांकि, कुछ मामलों में ऐसा हो सकता है कि आप कुछ एचटीटीपी हेडर के लिए, डुप्लीकेट और एक से ज़्यादा वैल्यू को शामिल करने के लिए अपवाद जोड़ना चाहें. ऐसे मामलों में, मैसेज प्रोसेसर के लेवल पर HTTPHeader.HEADER_NAME
प्रॉपर्टी सेट करके, किसी खास एचटीटीपी हेडर के लिए डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को इस्तेमाल करने की अनुमति दी जा सकती है.
इस दस्तावेज़ में इस प्रॉपर्टी के बारे में जानकारी दी गई है. साथ ही, ऊपर बताई गई गड़बड़ियों से बचने के लिए, इस प्रॉपर्टी को चालू करने का तरीका भी बताया गया है. साथ ही, यहां बताए गए सबसे सही तरीके भी बताए गए हैं.
डुप्लीकेट और एक से ज़्यादा वैल्यू देने के लिए एचटीटीपी हेडर प्रॉपर्टी
Apigee Edge, एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के व्यवहार को कंट्रोल करने के लिए, ये दो प्रॉपर्टी देता है. ध्यान दें कि इन्हें सिर्फ़ मैसेज प्रोसेसर पर कॉन्फ़िगर किया जा सकता है. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका लेख में बताए गए टोकन सिंटैक्स का इस्तेमाल किया जाता है.
प्रॉपर्टी का नाम | ब्यौरा | वैल्यू की अनुमति है |
---|---|---|
HTTPHeader.ANY |
इस प्रॉपर्टी से पता चलता है कि सभी एचटीटीपी हेडर के लिए डुप्लीकेट या एक से ज़्यादा वैल्यू का इस्तेमाल किया जा सकता है या नहीं. इनमें क्लाइंट के एचटीटीपी अनुरोध के हिस्से के तौर पर भेजे गए कस्टम हेडर या बैकएंड सर्वर से Apigee Edge को भेजे गए एचटीटीपी रिस्पॉन्स शामिल हैं. डिफ़ॉल्ट वैल्यू:
|
|
|
इस प्रॉपर्टी का इस्तेमाल करके, |
जैसा ऊपर बताया गया है. |
ऐसे हेडर जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू होने की अनुमति नहीं है
जैसा कि पहले बताया गया है, Apigee Edge डिफ़ॉल्ट रूप से, ज़्यादातर एचटीटीपी हेडर के लिए डुप्लीकेट
और एक से ज़्यादा वैल्यू इस्तेमाल करने की अनुमति देता है. इसकी वजह यह है कि HTTPHeader.ANY
प्रॉपर्टी को multivalued, allowDuplicate.
वैल्यू के साथ कॉन्फ़िगर किया गया है
कॉन्फ़िगरेशन को बदला गया
कुछ खास हेडर के लिए, डिफ़ॉल्ट कॉन्फ़िगरेशन को बदलने के लिए, इनमें से किसी एक तरीके का इस्तेमाल किया जाता है:
HTTPHeader.HEADER_NAME=multivalued, allowDuplicate
यह कॉन्फ़िगरेशन, डिफ़ॉल्ट व्यवहार को नहीं बदलता. इसका मतलब है कि किसी खास हेडर में डुप्लीकेट और एक से ज़्यादा वैल्यू हो सकती हैं
.HTTPHeader.HEADER_NAME=
यह कॉन्फ़िगरेशन, डिफ़ॉल्ट व्यवहार को बदल देता है. इसका मतलब है कि किसी खास हेडर में, डुप्लीकेट और एक से ज़्यादा वैल्यू रखने की अनुमति नहीं है.
ऐसे हेडर तय करना जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू होने की अनुमति नहीं है
इस सेक्शन में, इन चीज़ों की पहचान करने का तरीका बताया गया है:
- ऐसे खास हेडर जिन्हें आपके Apigee Edge के प्राइवेट क्लाउड सेटअप में, डुप्लीकेट और एक से ज़्यादा वैल्यू रखने की अनुमति नहीं है , और
- पहले से मौजूद कॉन्फ़िगरेशन वाले खास हेडर
मैसेज प्रोसेसर मशीन पर,
/opt/apigee/edge-message-processor/conf
डायरेक्ट्री मेंHTTPHeader.
प्रॉपर्टी खोजें, जैसा कि यहां दिखाया गया है:grep -ri "HTTPHeader." /opt/apigee/edge-message-processor/conf
सैंपल आउटपुट:
# grep -ri "HTTPHeader" /opt/apigee/edge-message-processor/conf /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.ANY=allowDuplicates, multiValued /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Connection=allowDuplicates, multiValued … <snipped> /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Host= /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires= /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Date=allowDuplicates … <snipped>
- जैसा कि ओवरराइट किया गया कॉन्फ़िगरेशन सेक्शन में बताया गया है,
ऊपर दिए गए सैंपल आउटपुट में नीचे दी गई जानकारी नोट करें:
- एचटीटीपी हेडर
Connection
की जगह इसे बदल दिया गया है, लेकिन इसमें डुप्लीकेट और एक से ज़्यादा वैल्यू हो सकती हैं - एचटीटीपी हेडर
Host
औरExpires
को ओवरराइट किया गया है. इसलिए, इनमें डुप्लीकेट और एक से ज़्यादा वैल्यू होने की अनुमति नहीं है - एचटीटीपी हेडर
Date
की जगह इसे बदला गया है और इसमें डुप्लीकेट वैल्यू जोड़ी जा सकती हैं. हालांकि, इसमें एक से ज़्यादा वैल्यू नहीं जोड़ी जा सकतीं - यहां दिखने वाले सभी हेडर (ऊपर दिए गए सैंपल में
Connection
,Host
,Expires
, औरDate
) को इस दस्तावेज़ में पहले से मौजूद कॉन्फ़िगरेशन वाले हेडर कहा जाता है.
- एचटीटीपी हेडर
Apigee Edge का व्यवहार
नीचे दी गई टेबल, Apigee Edge के काम करने के तरीके के बारे में बताती है. यह तब काम करता है, जब हेडर को डुप्लीकेट के तौर पर भेजा जाता है. साथ ही, इसमें एक से ज़्यादा वैल्यू दी जाती हैं. यह इस बात पर निर्भर करता है कि मैसेज प्रोसेसर पर HTTPHeader
प्रॉपर्टी को कैसे कॉन्फ़िगर किया जाता है. उदाहरण के लिए, test-header
का HTTPHeader
उदाहरण दिया गया है.
अनुरोध | conf/http.properties+HTTPHeader.test-header= के मान के आधार पर आउटगोइंग हेडर | |||
---|---|---|---|---|
<खाली> | allowDuplicate | multiValued | अनुमति देंडुप्लीकेट, एक से ज़्यादा वैल्यू वाला (डिफ़ॉल्ट) | |
test‑header=a,b |
test‑header=a,b |
test‑header=a,b |
आंतरिक रूप से हमने
और फिर |
आंतरिक रूप से हमने
हालांकि, इसके बाद ओरिजनल फ़ॉर्म को टारगेट के लिए भेजा जाता है. |
test‑header=a test‑header=b |
protocol.http. |
test‑header=a test‑header=b |
protocol.http. |
test‑header=a test‑header=b |
शुरू करने से पहले
इस दस्तावेज़ में दिया गया तरीका इस्तेमाल करने से पहले, पक्का कर लें कि आपको प्राइवेट क्लाउड पर Edge के लिए प्रॉपर्टी कॉन्फ़िगर करने की जानकारी हो. इसके बारे में Edge को कॉन्फ़िगर करने का तरीका बताया गया है.
स्वीकार करने के लिए डुप्लीकेट और हेडर के लिए एक से ज़्यादा वैल्यू कॉन्फ़िगर करना
जैसा कि डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति देने के लिए एचटीटीपी हेडर प्रॉपर्टी में बताया गया है,प्रॉपर्टी HTTPHeader.ANY = allowDuplicates,
multivalued
की वैल्यू का मतलब है कि Apigee Edge में सभी हेडर में डुप्लीकेट और एक से ज़्यादा वैल्यू हो सकती हैं. हालांकि, कुछ हेडर ऐसी होती हैं जिनकी वैल्यू को साफ़ तौर पर ओवरराइट कर दिया जाता है. ऐसा इसलिए किया जाता है, ताकि HTTPHeader.HEADER_NAME
प्रॉपर्टी का इस्तेमाल करने पर, डुप्लीकेट हेडर या एक से ज़्यादा वैल्यू को
अनुमति न दी जा सके.
इस सेक्शन में, HTTPHeader.HEADER_NAME
प्रॉपर्टी को कॉन्फ़िगर करने का तरीका बताया गया है. इस तरह,
Message प्रोसेसर पर इस तरह के किसी भी एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति दी जा सकती है. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताए गए सिंटैक्स के मुताबिक टोकन का इस्तेमाल किया जाता है.
इस सेक्शन में, हम Expires
(और myheader
) का इस्तेमाल उदाहरण वाले हेडर के तौर पर करेंगे. इसके लिए, हम डुप्लीकेट और एक से ज़्यादा वैल्यू का इस्तेमाल करने की अनुमति देना चाहते हैं. इसके बारे में यहां बताया गया है:
- प्रॉपर्टी
HTTPHeaderHEADER_NAME
की मौजूदा वैल्यू पता करें और पक्का करें कि यह पहले से ही चालू न हो. साथ ही, यहां दिए गए निर्देश का इस्तेमाल करके, डुप्लीकेट और एक से ज़्यादा वैल्यू देने की अनुमति भी नहीं दी गई है:grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
उदाहरण के लिए, अगर आपको
Expires
हेडर के लिए प्रॉपर्टी सेट करनी है, तो मैसेज प्रोसेसर पर प्रॉपर्टीHTTPHeader.Expires
टोकन की मौजूदा वैल्यू देखें:grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
ऊपर दिए गए निर्देश के आउटपुट से, इनमें से कोई एक नतीजा मिलता है:
- प्रॉपर्टी को खाली पर सेट किया गया है, तो इसका मतलब है कि वैल्यू को ओवरराइट किया गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर है, ताकि डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को अनुमति न दी जा सके. इसका मतलब है कि आपके पास एचटीटीपी अनुरोध के हिस्से के तौर पर या Apigee को एचटीटीपी रिस्पॉन्स के तौर पर,
Expires
हेडर को एक से ज़्यादा बार भेजने की अनुमति नहीं है. - किसी खास प्रॉपर्टी के लिए कोई हिट नहीं है. इसका मतलब है कि वैल्यू को बदला नहीं गया है (और यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है). इसका मतलब है कि कोई खास हेडर एक से ज़्यादा बार भेजा जा सकता है (डुप्लीकेट की अनुमति है) को एचटीटीपी अनुरोध या Apigee Edge के एचटीटीपी रिस्पॉन्स के तौर पर भेजा जा सकता है.
- प्रॉपर्टी को
allowDuplicates, multivalued
वैल्यू के साथ सेट किया गया है. इसका मतलब है कि वैल्यू को साफ़ तौर पर ओवरराइट किया गया है (और यह एक हेडर है, जिसमें पहले से मौजूद कॉन्फ़िगरेशन मौजूद है). इसका मतलब है कि कोई खास हेडर, एचटीटीपी अनुरोध या Apigee के एचटीटीपी रिस्पॉन्स के तौर पर, एक से ज़्यादा बार भेजा जा सकता है (डुप्लीकेट की अनुमति है).
खोज कमांड का सैंपल आउटपुट:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=
ऊपर दिए गए सैंपल आउटपुट से पता चलता है कि प्रॉपर्टी
HTTPHeader.Expires
को खाली सेट किया गया है. इसका मतलब है कि प्रॉपर्टी को ओवरराइट किया गया है, ताकि हेडरExpires
के लिए डुप्लीकेट या एक से ज़्यादा वैल्यू इस्तेमाल न की जा सकें. - प्रॉपर्टी को खाली पर सेट किया गया है, तो इसका मतलब है कि वैल्यू को ओवरराइट किया गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर है, ताकि डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को अनुमति न दी जा सके. इसका मतलब है कि आपके पास एचटीटीपी अनुरोध के हिस्से के तौर पर या Apigee को एचटीटीपी रिस्पॉन्स के तौर पर,
- अगर आपको लगता है कि किसी खास हेडर से जुड़ी प्रॉपर्टी को साफ़ तौर पर ओवरराइट किया गया है, तो डुप्लीकेट या एक से ज़्यादा वैल्यू को इस्तेमाल करने की अनुमति नहीं देनी, जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है, सिर्फ़ तब यह तरीका अपनाएं. अगर इसे साफ़ तौर पर ओवरराइट नहीं किया गया है, तो इस सेक्शन के बाकी चरण छोड़ दें.
- बदलाव करें पर टैप करें. अगर यह मौजूद नहीं है, तो इसे बनाया जा सकता है:
/opt/apigee/customer/application/message-processor.properties
उदाहरण के लिए, vi का इस्तेमाल करके फ़ाइल खोलने के लिए, यह डालें:
vi /opt/apigee/customer/application/message-processor.properties
- इस फ़ॉर्मैट में लाइन जोड़ें:
conf_http_HTTPHeader.Expires=allowDuplicates, multiValued
- बदलावों को सेव करें.
पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक,
apigee
उपयोगकर्ता के पास हो. अगर ऐसा नहीं है, तो नीचे दिए गए निर्देश का पालन करें:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
मैसेज प्रोसेसर को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
ट्रैफ़िक पर असर डाले बिना रीस्टार्ट करने के लिए, देखें ट्रैफ़िक पर असर डाले बिना मैसेज प्रोसेसर को फिर से चालू करना.
- अगर आपके पास एक से ज़्यादा मैसेज प्रोसेसर हैं, तो सभी मैसेज प्रोसेसर पर ऊपर दिया गया तरीका दोहराएं.
हेडर की पुष्टि करने की प्रोसेस को डुप्लीकेट और एक से ज़्यादा वैल्यू के लिए कॉन्फ़िगर किया गया है
इस सेक्शन में, यह पुष्टि करने का तरीका बताया गया है कि किसी खास हेडर के लिए HTTPHeader.HEADER_NAME
प्रॉपर्टी अपडेट हो गई है, ताकि मैसेज प्रोसेसर पर डुप्लीकेट कॉपी को अनुमति दी जा सके.
हम हेडर के तौर पर Expires
का इस्तेमाल करेंगे और देखेंगे कि इससे जुड़ी प्रॉपर्टी
HTTPHeader.Expires
को अपडेट किया गया है या नहीं.
भले ही, Message प्रोसेसर पर वैल्यू को अपडेट करने के लिए,
conf_http_HTTPHeader.Expires
टोकन का इस्तेमाल किया गया हो, लेकिन आपको इस बात की पुष्टि करनी होगी कि असल प्रॉपर्टी HTTPHeader.Expires
को नई वैल्यू के साथ सेट किया गया है या नहीं.
- Message प्रोसेसर मशीन पर,
/opt/apigee/edge-message-processor/conf
डायरेक्ट्री मेंHTTPHeader.HEADER_NAME
प्रॉपर्टी खोजें और देखें कि क्या उसे यहां दिखाई गई नई वैल्यू के साथ सेट किया गया है या नहीं:grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
उदाहरण के लिए, अगर आपको यह देखना है कि प्रॉपर्टी
HTTPHeader.Expires
, नई वैल्यू के हिसाब से सेट है या नहीं, तो यह कमांड चलाएं:grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
- अगर Message प्रोसेसर पर
HTTPHeader.HEADER_NAME
के लिए नई वैल्यू सेट हो जाती है, तो ऊपर दिया गया निर्देश,http.properties
फ़ाइल में नई वैल्यू दिखाता है. allowDuplicates
औरmultiValued
को कॉन्फ़िगर करने के बाद, ऊपर दिए गए कमांड से मिला नतीजा यहां दिया गया है:/opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued
- ऊपर दिए गए उदाहरण के आउटपुट में, ध्यान दें कि
HTTPHeader.Expires
प्रॉपर्टी कोhttp.properties
में, नई वैल्यूallowDuplicates, multiValued
के साथ सेट किया गया है. इससे पता चलता है किHTTPHeader
में डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति देने का तरीका, मैसेज प्रोसेसर पर कॉन्फ़िगर कर लिया गया है. - अगर आपको अब भी
HTTPHeader.HEADER_NAME
प्रॉपर्टी की पुरानी वैल्यू दिखती है, तो पुष्टि करें कि आपने Allowडुप्लीकेट और हेडर के लिए एक से ज़्यादा वैल्यू कॉन्फ़िगर करना में बताए गए तरीके का सही तरीके से पालन किया है. अगर आपसे कोई चरण छूट गया है, तो सभी चरणों को फिर से सही तरीके से दोहराएं.पक्का करें कि आपकी प्रॉक्सी उम्मीद के मुताबिक काम कर रही हैं. खास तौर पर तब, जब प्रॉक्सी में हेडर पाने और सेट करने के लिए कोई फ़ंक्शनल लॉजिक हो.
- अगर अब भी प्रॉपर्टी में बदलाव नहीं हो पा रहा है, तो Apigee Edge की सहायता टीम से संपर्क करें
हेडर के लिए, allowडुप्लीकेट को बंद करना
इस सेक्शन में बताया गया है कि मैसेज प्रोसेसर पर किसी खास एचटीटीपी हेडर के लिए HTTPHeader.{Headername}
प्रॉपर्टी को डुप्लीकेट और एक से ज़्यादा वैल्यू को इस्तेमाल न करने के लिए कैसे कॉन्फ़िगर करें. Edge को कॉन्फ़िगर करने का तरीका में बताए गए सिंटैक्स के मुताबिक, उससे जुड़े टोकन का इस्तेमाल करें.
इस सेक्शन में, हम Expires
(और myheader
) का इस्तेमाल उदाहरण वाले हेडर के तौर पर करेंगे. इसके लिए, हम डुप्लीकेट हेडर के तौर पर नीचे दी गई जानकारी का इस्तेमाल करने की अनुमति नहीं देना चाहते हैं:
- प्रॉपर्टी की
मौजूदा वैल्यू तय करें.
HTTPHeaderHEADER_NAME
इससे यह पक्का किया जा सकेगा कि इसे पहले से बंद नहीं किया गया है, ताकि डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति दी जा सके. इसके लिए, आगे दिए गए निर्देश का इस्तेमाल करें:grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
उदाहरण के लिए, अगर आपको
Expires
हेडर के लिए प्रॉपर्टी सेट करनी है, तो Message प्रोसेसर पर प्रॉपर्टीHTTPHeader.Expires
टोकन की मौजूदा वैल्यू देखें:grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
ऊपर दिए गए निर्देश के आउटपुट से, इनमें से कोई एक नतीजा मिलता है:
- प्रॉपर्टी को ब्लैंक पर सेट करने के बाद, इससे पता चलता है कि वैल्यू को बदलकर NOT
किया गया है, ताकि डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को इस्तेमाल करने की अनुमति दी जा सके. इसलिए, आपके पास एचटीटीपी अनुरोध के हिस्से के तौर पर या Apigee को एचटीटीपी रिस्पॉन्स के तौर पर,
Expires
हेडर को एक से ज़्यादा बार भेजने की अनुमति नहीं है. - किसी खास प्रॉपर्टी के लिए कोई हिट नहीं है. इसका मतलब है कि वैल्यू को बदला नहीं गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन के साथ NOT हेडर है. इसका मतलब है कि कोई खास हेडर एक से ज़्यादा बार भेजा जा सकता है (डुप्लीकेट की अनुमति है) को एचटीटीपी अनुरोध या Apigee Edge के एचटीटीपी रिस्पॉन्स के तौर पर भेजा जा सकता है.
- प्रॉपर्टी को
allowDuplicates, multivalued
वैल्यू के साथ सेट किया गया है. इसका मतलब है कि वैल्यू को साफ़ तौर पर ओवरराइट किया गया है और यह मौजूदा कॉन्फ़िगरेशन है. हालांकि, इसका मतलब यह है कि कोई खास हेडर, एचटीटीपी अनुरोध या Apigee के एचटीटीपी रिस्पॉन्स के तौर पर एक से ज़्यादा बार भेजा जा सकता है. डुप्लीकेट हेडर को एक से ज़्यादा बार भेजा जा सकता है.
सैंपल आउटपुट #1
खोज से जुड़े निर्देश के आउटपुट #1 का सैंपल:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued
आउटपुट के सैंपल से पता चलता है कि प्रॉपर्टी
HTTPHeader.Expires
कोallowDuplicates, multiValued
पर सेट किया गया है. इसका मतलब है कि प्रॉपर्टीExpires
हेडर के लिए डुप्लीकेट या एक से ज़्यादा वैल्यू देने के लिए, प्रॉपर्टी को ओवरराइट किया गया है.सैंपल आउटपुट #2
खोज कमांड के निर्देश और आउटपुट #2 का सैंपल
grep -ri "HTTPHeader.myheader" /opt/apigee/edge-message-processor/conf
आउटपुट के नमूने में कोई आउटपुट नहीं दिखता. इसका मतलब है कि
HTTPHeader.myheader
प्रॉपर्टी, डिफ़ॉल्ट रूप सेallowDuplicates, multiValued
पर सेट है. इसका मतलब यह भी है कि मेरे हेडर के लिए प्रॉपर्टी ओवरराइट नहीं की गई है , - प्रॉपर्टी को ब्लैंक पर सेट करने के बाद, इससे पता चलता है कि वैल्यू को बदलकर NOT
किया गया है, ताकि डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को इस्तेमाल करने की अनुमति दी जा सके. इसलिए, आपके पास एचटीटीपी अनुरोध के हिस्से के तौर पर या Apigee को एचटीटीपी रिस्पॉन्स के तौर पर,
- अगर आपको इनमें से कोई भी बदलाव दिखता है, तो इस सेक्शन में दिया गया बाकी चरण पूरा करें:
- किसी खास हेडर से जुड़ी प्रॉपर्टी को बदला जाता है, ताकि डुप्लीकेट और एक से ज़्यादा वैल्यू को इस्तेमाल किया जा सके. जैसा कि ऊपर सैंपल आउटपुट #1 (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर) में बताया गया है
- बताए गए हेडर से जुड़ी प्रॉपर्टी के लिए कोई हिट नहीं है, जैसा कि ऊपर दिए गए सैंपल आउटपुट #2 में बताया गया है. हालांकि, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है
या फिर, इस सेक्शन के बाकी चरण छोड़ दें.
- इस फ़ाइल में बदलाव करें. अगर यह मौजूद नहीं है, तो इसे बनाया जा सकता है.
/opt/apigee/customer/application/message-processor.properties
उदाहरण के लिए, vi का इस्तेमाल करके फ़ाइल खोलने के लिए, यह डालें:
vi /opt/apigee/customer/application/message-processor.properties
- प्रॉपर्टी फ़ाइल में, नीचे दिए गए फ़ॉर्मैट में लाइन जोड़ें:
पहले से मौजूद कॉन्फ़िगरेशन
स्थिति #1: पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर:
conf_http_HTTPHeader.Expires=
पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है
स्थिति #2: पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है:
conf/http.properties+HTTPHeader.myheader=
- बदलावों को सेव करें.
- पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक,
apigee
उपयोगकर्ता के पास हो. अगर ऐसा नहीं है, तो नीचे दिया गया तरीका अपनाएं:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- मैसेज प्रोसेसर को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
ट्रैफ़िक पर असर डाले बिना रीस्टार्ट करने के लिए, देखें ट्रैफ़िक पर असर डाले बिना मैसेज प्रोसेसर को फिर से चालू करना.
- अगर आपके पास एक से ज़्यादा मैसेज प्रोसेसर हैं, तो सभी मैसेज प्रोसेसर पर ऊपर दिया गया तरीका दोहराएं.
हेडर की पुष्टि करने की प्रोसेस को डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति नहीं देने के लिए कॉन्फ़िगर किया गया है
इस सेक्शन में यह पुष्टि करने का तरीका बताया गया है कि मैसेज प्रोसेसर पर डुप्लीकेट को अनुमति न देने के लिए, खास हेडर के लिए HTTPHeader.HEADER_NAME
प्रॉपर्टी अपडेट हो गई है या नहीं.
हम उदाहरण के तौर पर हेडर के तौर पर Expires
(और myheader
) का इस्तेमाल करेंगे और देखेंगे कि
इससे जुड़ी प्रॉपर्टी HTTPHeader.Expires
(और
HTTPHeader.myheader
) को अपडेट किया गया है या नहीं.
Message प्रोसेसर मशीन पर,
/opt/apigee/edge-message- processor/conf
डायरेक्ट्री मेंHTTPHeader.HEADER_NAME
प्रॉपर्टी खोजें और देखें कि क्या उसे नई वैल्यू के साथ सेट किया गया है या नहीं, जैसा कि नीचे दिखाया गया है:grep -ri "HTTPHeader.HEADER_NAME" /opt/apigee/edge-message-processor/conf
उदाहरण के लिए, अगर आपको यह देखना है कि
HTTPHeader.Expires
प्रॉपर्टी, नई वैल्यू के साथ सेट है या नहीं, तो यह कमांड चलाएं:पहले से मौजूद कॉन्फ़िगरेशन
grep -ri "HTTPHeader.Expires" /opt/apigee/edge-message-processor/conf
पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है
grep -ri "HTTPHeader.myheader" /opt/apigee/edge-message-processor/conf
- अगर Message प्रोसेसर पर, एचटीटीपी हेडर की नई वैल्यू को
HTTPHeader.HEADER_NAME
I के लिए सेट किया गया है, तो ऊपर दिया गया निर्देश,http.properties
फ़ाइल में नई वैल्यू दिखाता है. allowDuplicates
को बंद करने के बाद, ऊपर दिए गए कमांड से मिला नतीजा यहां दिया गया है:पहले से मौजूद कॉन्फ़िगरेशन
स्थिति #1: समयसीमा खत्म होने वाला हेडर (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर)
/opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=
पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है
स्थिति #2: myहेडर हेडर (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है)
/opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.myheader=
- ऊपर दिए गए आउटपुट आउटपुट में, ध्यान दें कि प्रॉपर्टी
HTTPHeader.Expires
( औरHTTPHeader.myheader
) कोhttp.properties
में, नई वैल्यू {blank}
के साथ सेट किया गया है. इससे पता चलता है कि खास एचटीटीपी हेडरExpires
(औरmyheader
) के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति देने का व्यवहार, मैसेज प्रोसेसर पर बंद कर दिया गया है. अगर आपको अब भी
HTTPHeader.Expires (or HTTPHeader.myheader)
प्रॉपर्टी की पुरानी वैल्यू दिखती है, तो पुष्टि करें कि आपने AllowDuplicates और हेडर के लिए एक से ज़्यादा वैल्यू कॉन्फ़िगर करने में बताए गए सभी निर्देशों का सही तरीके से पालन किया है. अगर आपसे कोई चरण छूट गया है, तो सभी चरणों को फिर से सही तरीके से दोहराएं.पक्का करें कि आपकी प्रॉक्सी उम्मीद के मुताबिक काम कर रही हैं. खास तौर पर तब, जब प्रॉक्सी में हेडर पाने और सेट करने के लिए कोई फ़ंक्शनल लॉजिक हो.
- अगर अब भी प्रॉपर्टी में बदलाव नहीं हो पा रहा है, तो Apigee Edge की सहायता टीम से संपर्क करें.