डुप्लीकेट हेडर की अनुमति देने के लिए, मैसेज प्रोसेसर को कॉन्फ़िगर करना

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

एचटीटीपी स्पेसिफ़िकेशन के मुताबिक, RFC 7230, सेक्शन 3.2.2: फ़ील्ड का क्रम के मुताबिक, Apigee Edge को उम्मीद है कि क्लाइंट से किए गए एचटीटीपी अनुरोध या बैकएंड सर्वर से मिले एचटीटीपी रिस्पॉन्स में, एक ही हेडर को एक ही या अलग-अलग वैल्यू के साथ एक से ज़्यादा बार पास नहीं किया जा रहा है. ऐसा तब तक नहीं किया जा सकता, जब तक किसी खास हेडर के लिए अपवाद नहीं है और डुप्लीकेट हेडर की अनुमति नहीं है.

डिफ़ॉल्ट रूप से, Apigee Edge ज़्यादातर एचटीटीपी हेडर में डुप्लीकेट और एक से ज़्यादा वैल्यू पास करने की अनुमति देता है. हालांकि, इसमें कुछ ऐसे हेडर शामिल नहीं किए जा सकते जो डुप्लीकेट और एक से ज़्यादा वैल्यू वाले हेडर में शामिल हैं. इसलिए:

  • अगर क्लाइंट किसी खास हेडर के साथ एक से ज़्यादा बार या कई वैल्यू के साथ एचटीटीपी अनुरोध भेजता है, तो आपको गड़बड़ी कोड protocol.http.DuplicateHeader के साथ 400 Bad Request मिलेगा. ऐसा उन एचटीटीपी हेडर के लिए भी होगा जिन्हें Apigee Edge में डुप्लीकेट/एक से ज़्यादा वैल्यू डालने की अनुमति नहीं है.
  • इसी तरह, अगर बैकएंड सर्वर किसी खास हेडर के साथ एक से ज़्यादा बार एचटीटीपी रिस्पॉन्स भेजता है या उन एचटीटीपी हेडर के लिए कई वैल्यू भेजता है जिनके लिए Apigee Edge में डुप्लीकेट या कई वैल्यू की अनुमति नहीं है, तो आपको गड़बड़ी का कोड 502 Bad Gateway protocol.http.DuplicateHeader दिखेगा

इन गड़बड़ियों को ठीक करने के लिए, सुझाया गया समाधान यह है कि क्लाइंट ऐप्लिकेशन और बैकएंड सर्वर को ठीक करें, ताकि डुप्लीकेट हेडर न भेजे जाएं. साथ ही, आरएफ़सी 7230, सेक्शन 3.2.2: फ़ील्ड का क्रम के निर्देशों का पालन करें. इन निर्देशों के बारे में, समस्या हल करने से जुड़ी इन प्लेबुक में बताया गया है:

हालांकि, कुछ मामलों में आपको कुछ एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू शामिल करने के लिए, अपवाद जोड़ना पड़ सकता है. ऐसी स्थितियों में, मैसेज प्रोसेसर लेवल पर HTTPHeader.HEADER_NAME प्रॉपर्टी सेट करके, किसी खास एचटीटीपी हेडर के लिए डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू की अनुमति दी जा सकती है.

इस दस्तावेज़ में, इस प्रॉपर्टी के बारे में जानकारी दी गई है. साथ ही, ऊपर बताई गई गड़बड़ियों से बचने के लिए, इस प्रॉपर्टी को चालू करने का तरीका बताया गया है. साथ ही, इस बारे में सबसे सही तरीके भी बताए गए हैं.

डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने के लिए एचटीटीपी हेडर प्रॉपर्टी

Apigee Edge, एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू देने की अनुमति देने के व्यवहार को कंट्रोल करने के लिए, नीचे दी गई दो प्रॉपर्टी उपलब्ध कराता है. ध्यान दें कि इन्हें सिर्फ़ मैसेज प्रोसेसर पर कॉन्फ़िगर किया जा सकता है. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताए गए टोकन सिंटैक्स का इस्तेमाल करें.

प्रॉपर्टी का नाम ब्यौरा इस्तेमाल की जा सकने वाली वैल्यू
HTTPHeader.ANY

इस प्रॉपर्टी से पता चलता है कि सभी एचटीटीपी हेडर के लिए डुप्लीकेट या एक से ज़्यादा वैल्यू डालने की अनुमति है या नहीं. इसमें, क्लाइंट के भेजे गए एचटीटीपी अनुरोध के हिस्से के तौर पर भेजे गए कस्टम हेडर या बैकएंड सर्वर से Apigee Edge को भेजे गए एचटीटीपी रिस्पॉन्स शामिल हैं.

डिफ़ॉल्ट वैल्यू:

multiValued, allowDuplicates,

  1. blank: एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू का इस्तेमाल करने की अनुमति नहीं है.
  2. multiValued: एक से ज़्यादा वैल्यू वाले हेडर को कई हेडर में बांटें. एचटीटीपी हेडर के लिए एक से ज़्यादा वैल्यू की अनुमति है, लेकिन डुप्लीकेट वैल्यू की अनुमति नहीं है. multiValued वैल्यू चालू है, जिसका मतलब है कि test-header=a,b को test-header=a और test-header=b. में बदल दिया जाएगा
  3. allowDuplicates: एक ही नाम वाले कई (डुप्लीकेट) एचटीटीपी हेडर इस्तेमाल करने की अनुमति मिलती है.
  4. multiValued, allowDuplicates: एचटीटीपी हेडर के लिए, एक से ज़्यादा वैल्यू और डुप्लीकेट, दोनों का इस्तेमाल किया जा सकता है.

HTTPHeader.HEADER_NAME

इस प्रॉपर्टी का इस्तेमाल, HTTPHeader.ANY में बताए गए हेडर के व्यवहार को बदलने के लिए किया जाता है

जैसा ऊपर बताया गया है.

ऐसे हेडर जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू डालने की अनुमति नहीं है

जैसा कि पहले बताया गया है, Apigee Edge डिफ़ॉल्ट रूप से ज़्यादातर एचटीटीपी हेडर के लिए, डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देता है. ऐसा इसलिए है, क्योंकि HTTPHeader.ANY प्रॉपर्टी को multiValued, allowDuplicates. वैल्यू के साथ कॉन्फ़िगर किया गया है

कॉन्फ़िगरेशन को ओवरराइट किया गया

कुछ खास हेडर के लिए, डिफ़ॉल्ट कॉन्फ़िगरेशन को इनमें से किसी एक तरीके का इस्तेमाल करके, फिर से लिखा जाता है:

  • HTTPHeader.HEADER_NAME=multiValued, allowDuplicates

    इस कॉन्फ़िगरेशन से डिफ़ॉल्ट तरीके में कोई बदलाव नहीं होता. इसका मतलब है कि किसी हेडर में डुप्लीकेट और एक से ज़्यादा वैल्यू हो सकती हैं

    .
  • HTTPHeader.HEADER_NAME=

    यह कॉन्फ़िगरेशन, डिफ़ॉल्ट व्यवहार को बदलता है. इसका मतलब है कि किसी खास हेडर में डुप्लीकेट और एक से ज़्यादा वैल्यू डालने की अनुमति नहीं है.

ऐसे हेडर तय करना जिनमें डुप्लीकेट और एक से ज़्यादा वैल्यू डालने की अनुमति नहीं है

इस सेक्शन में, इन चीज़ों की पहचान करने का तरीका बताया गया है:

  • आपके Apigee Edge प्राइवेट क्लाउड सेटअप में, ऐसे खास हेडर जिनके लिए डुप्लीकेट और एक से ज़्यादा वैल्यू का इस्तेमाल नहीं किया जा सकता
  • पहले से मौजूद कॉन्फ़िगरेशन वाले खास हेडर
  1. मैसेज प्रोसेसर मशीन पर, /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>
  2. कॉन्फ़िगरेशन ओवरराइट किया गया सेक्शन में बताए गए तरीके के मुताबिक, ऊपर दिए गए सैंपल आउटपुट में यह जानकारी देखें:
    1. एचटीटीपी हेडर Connection को ओवरराइट कर दिया गया है. हालांकि, इसमें डुप्लीकेट और एक से ज़्यादा वैल्यू शामिल की जा सकती हैं
    2. एचटीटीपी हेडर Host और Expires ओवरराइट कर दिए गए हैं. साथ ही, इनमें डुप्लीकेट और एक से ज़्यादा वैल्यू शामिल करने की अनुमति नहीं है
    3. एचटीटीपी हेडर Date को ओवरराइट किया जाता है और इसमें डुप्लीकेट वैल्यू हो सकती हैं, लेकिन एक से ज़्यादा वैल्यू नहीं हो सकतीं
    4. यहां दिखने वाले सभी हेडर (Connection, Host, Expires, और Date ऊपर दिए गए सैंपल में), इस दस्तावेज़ में पहले से मौजूद कॉन्फ़िगरेशन वाले हेडर के तौर पर दिखाए जाते हैं.

Apigee Edge का व्यवहार

यहां दी गई टेबल में, Apigee Edge के व्यवहार के बारे में बताया गया है. यह तब होता है, जब हेडर को डुप्लीकेट के तौर पर और एक से ज़्यादा वैल्यू के साथ भेजा जाता है. यह इस बात पर निर्भर करता है कि मैसेज प्रोसेसर पर HTTPHeader प्रॉपर्टी को कैसे कॉन्फ़िगर किया गया है. इसके लिए, test-header का एक उदाहरण दिया गया है.HTTPHeader

अनुरोध conf/http.properties+HTTPHeader.test-header= की वैल्यू के आधार पर, आउटगोइंग हेडर
<Blank> allowDuplicates multiValued allowDuplicates, multiValued (डिफ़ॉल्ट)
test‑header=a,b test‑header=a,b test‑header=a,b

protocol.http.
DuplicateHeader

हम संगठन के अंदर test-header=a,b को इनमें बांटते हैं:

  • test-header=a, और
  • test-header=b,

इसके बाद, DuplicateHeader गड़बड़ी का मैसेज दिखता है.

test‑header=a,b

हमने test-header=a,b को अंदरूनी तौर पर इन हिस्सों में बांटा है:

  • test-header=a, और
  • test-header=b,

लेकिन फिर मूल फ़ॉर्म को टारगेट पर भेजा जाता है.

test‑header=a
test‑header=b
protocol.http.
DuplicateHeader
test‑header=a
test‑header=b
protocol.http.
DuplicateHeader
test‑header=a
test‑header=b

शुरू करने से पहले

इस दस्तावेज़ में दिए गए चरणों का इस्तेमाल करने से पहले, पक्का करें कि आपको Edge को कॉन्फ़िगर करने का तरीका में बताए गए, प्राइवेट क्लाउड पर Edge के लिए प्रॉपर्टी कॉन्फ़िगर करने का तरीका पता हो.

हेडर के लिए हैं-डुप्लीकेट और एक से ज़्यादा वैल्यू कॉन्फ़िगर करना

डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने वाली एचटीटीपी हेडर प्रॉपर्टी में बताया गया है कि प्रॉपर्टी HTTPHeader.ANY = allowDuplicates, multiValued की वैल्यू से पता चलता है कि Apigee Edge में सभी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति है. हालांकि, कुछ हेडर ऐसे होते हैं जिन्हें साफ़ तौर पर ओवरराइट किया जाता है. ऐसा इस वजह से होता है कि डुप्लीकेट हेडर या एक से ज़्यादा वैल्यू न दिखें. इसके लिए, प्रॉपर्टी HTTPHeader.HEADER_NAME का इस्तेमाल किया जाता है.

इस सेक्शन में बताया गया है कि HTTPHeader.HEADER_NAME प्रॉपर्टी को कॉन्फ़िगर कैसे करें, ताकि मैसेज प्रोसेसर पर ऐसे किसी भी एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति दी जा सके. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताए गए सिंटैक्स के मुताबिक टोकन का इस्तेमाल किया जा सकता है.

इस सेक्शन में, हम Expires (और myheader) का इस्तेमाल उदाहरण के तौर पर करेंगे हेडर के लिए, हम डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देना चाहते हैं, जैसा कि यहां बताया गया है:

  1. 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
    

    ऊपर दिए गए कमांड का आउटपुट इनमें से कोई एक होता है:

    1. अगर प्रॉपर्टी को खाली पर सेट किया गया है, तो इसका मतलब है कि वैल्यू को फिर से लिखा गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर है. ऐसा डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को अनुमति न देने के लिए किया जाता है. इसका मतलब है कि Apigee को एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, Expires हेडर को एक से ज़्यादा बार भेजने की अनुमति नहीं है.
    2. अगर किसी खास प्रॉपर्टी के लिए कोई हिट नहीं है, तो इसका मतलब है कि वैल्यू ओवरराइट नहीं की गई है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है. इसका मतलब है कि किसी खास हेडर को एक से ज़्यादा बार (डुप्लीकेट कॉपी की अनुमति है) भेजा जा सकता है. ऐसा, एचटीटीपी अनुरोध या Apigee Edge को एचटीटीपी रिस्पॉन्स के तौर पर किया जा सकता है.
    3. अगर प्रॉपर्टी को allowDuplicates, multiValued वैल्यू के साथ सेट किया गया है, तो इसका मतलब है कि वैल्यू को साफ़ तौर पर बदल दिया गया है . साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर है. इसका मतलब है कि Apigee को एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, किसी खास हेडर को एक से ज़्यादा बार भेजा जा सकता है (डुप्लीकेट की अनुमति है).

    खोज निर्देश के आउटपुट का सैंपल:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=

    ऊपर दिए गए सैंपल आउटपुट से पता चलता है कि प्रॉपर्टी HTTPHeader.Expires को खाली पर सेट किया गया है. इसका मतलब है कि हेडर Expires के लिए डुप्लीकेट या एक से ज़्यादा वैल्यू को अनुमति न देने के लिए, प्रॉपर्टी को ओवरराइट कर दिया गया है.

  2. अगर आपको लगता है कि किसी हेडर से जुड़ी प्रॉपर्टी को डुप्लीकेट या एक से ज़्यादा वैल्यू को अनुमति न देने के लिए, साफ़ तौर पर बदल दिया गया है, तो ऊपर दिए गए उदाहरण के आउटपुट की तरह ही, सिर्फ़ तब यह तरीका अपनाएं. अगर इसे साफ़ तौर पर ओवरराइट नहीं किया गया है, तो इस सेक्शन के बाकी चरणों को छोड़ दें.
  3. बदलाव करें पर टैप करें. अगर यह मौजूद नहीं है, तो इसे बनाया जा सकता है:
    /opt/apigee/customer/application/message-processor.properties

    उदाहरण के लिए, vi का इस्तेमाल करके फ़ाइल खोलने के लिए, यह डालें:

    vi /opt/apigee/customer/application/message-processor.properties
    
  4. इस फ़ॉर्मैट में लाइन जोड़ें:
    conf_http_HTTPHeader.Expires=allowDuplicates, multiValued
  5. बदलावों को सेव करें.
  6. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक apigee उपयोगकर्ता के पास हो. अगर ऐसा नहीं है, तो यह कमांड चलाएं:

    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  7. मैसेज प्रोसेसर को रीस्टार्ट करें:

    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    

    ट्रैफ़िक के असर के बिना रीस्टार्ट करने के लिए, ट्रैफ़िक पर असर के बिना मैसेज प्रोसेसर को रीस्टार्ट करना लेख देखें.

  8. अगर आपके पास एक से ज़्यादा मैसेज प्रोसेसर हैं, तो ऊपर दिया गया तरीका सभी मैसेज प्रोसेसर पर दोहराएं.

यह पुष्टि करना कि हेडर को डुप्लीकेट और एक से ज़्यादा वैल्यू के लिए कॉन्फ़िगर किया गया है

इस सेक्शन में यह पुष्टि करने का तरीका बताया गया है कि मैसेज प्रोसेसर पर डुप्लीकेट हेडर को अनुमति देने के लिए, किसी खास हेडर के लिए HTTPHeader.HEADER_NAME प्रॉपर्टी को अपडेट किया गया है या नहीं.

हम Expires को हेडर के उदाहरण के तौर पर इस्तेमाल करेंगे और देखेंगे कि उससे जुड़ी प्रॉपर्टी HTTPHeader.Expires अपडेट हुई है या नहीं.

मैसेज प्रोसेसर पर वैल्यू अपडेट करने के लिए, conf_http_HTTPHeader.Expires टोकन का इस्तेमाल करने के बावजूद, आपको पुष्टि करनी होगी कि असल प्रॉपर्टी HTTPHeader.Expires को नई वैल्यू के साथ सेट किया गया है या नहीं.

  1. मैसेज प्रोसेसर मशीन पर, /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
    
  2. अगर मैसेज प्रोसेसर पर, HTTPHeader.HEADER_NAME के लिए नई वैल्यू सेट हो जाती है, तो ऊपर दिया गया निर्देश, http.properties फ़ाइल में नई वैल्यू दिखाता है.
  3. allowDuplicates और multiValued को कॉन्फ़िगर करने के बाद, ऊपर दिए गए कमांड का सैंपल नतीजा इस तरह दिखता है:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=allowDuplicates, multiValued
  4. ऊपर दिए गए उदाहरण के तौर पर, ध्यान दें कि HTTPHeader.Expires प्रॉपर्टी को http.properties में, नई वैल्यू allowDuplicates, multiValued के साथ सेट किया गया है. इससे पता चलता है कि HTTPHeader में डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति देने की कार्रवाई, मैसेज प्रोसेसर पर सही तरीके से कॉन्फ़िगर हो गई है.
  5. अगर आपको अब भी प्रॉपर्टी HTTPHeader.HEADER_NAME की पुरानी वैल्यू दिखती है, तो पुष्टि करें कि आपने हेडर के लिए allowDuplicates और कई वैल्यू कॉन्फ़िगर करने से जुड़े सभी चरणों को सही तरीके से पूरा किया है. अगर आपने कोई चरण छोड़ा है, तो सभी चरणों को सही तरीके से दोहराएं.

    पक्का करें कि आपकी प्रॉक्सी उम्मीद के मुताबिक काम कर रही हों. ऐसा खास तौर पर तब ज़रूरी है, जब प्रॉक्सी में हेडर पाने और सेट करने के लिए कोई फ़ंक्शनल लॉजिक हो.

  6. अगर अब भी प्रॉपर्टी में बदलाव नहीं हो पा रहा है, तो Apigee Edge की सहायता टीम से संपर्क करें

हेडर के लिए, allowDuplicates बंद करना

इस सेक्शन में, प्रॉपर्टी HTTPHeader.{Headername} को कॉन्फ़िगर करने का तरीका बताया गया है, ताकि मैसेज प्रोसेसर पर किसी खास एचटीटीपी हेडर के लिए, डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति न दी जाए. इसके लिए, Edge को कॉन्फ़िगर करने का तरीका में बताए गए सिंटैक्स के हिसाब से, उससे जुड़े टोकन का इस्तेमाल किया जाता है.

इस सेक्शन में, हम Expires (और myheader) का इस्तेमाल, उदाहरण के तौर पर उस हेडलाइन के लिए करेंगे जिसके लिए हम डुप्लीकेट की अनुमति नहीं देना चाहते. इस बारे में यहां बताया गया है:

  1. प्रॉपर्टी 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
    

    ऊपर दिए गए कमांड का आउटपुट इनमें से कोई एक होता है:

    1. अगर प्रॉपर्टी को खाली पर सेट किया गया है, तो इसका मतलब है कि वैल्यू को डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को अनुमति न देने के लिए,ओवरराइट किया गया है. इसका मतलब है कि Apigee को एचटीटीपी अनुरोध या एचटीटीपी रिस्पॉन्स के हिस्से के तौर पर, Expires हेडर को एक से ज़्यादा बार नहीं भेजा जा सकता.
    2. किसी खास प्रॉपर्टी के लिए कोई हिट नहीं होता, इसका मतलब है कि उस वैल्यू को ओवरराइट नहीं किया गया है. साथ ही, यह पहले से मौजूद कॉन्फ़िगरेशन वाला NOT हेडर है. इसका मतलब है कि किसी खास हेडर को एचटीटीपी अनुरोध के हिस्से के तौर पर या Apigee Edge को एचटीटीपी रिस्पॉन्स के तौर पर एक से ज़्यादा बार (डुप्लीकेट कॉपी की अनुमति है) भेजा जा सकता है.
    3. अगर प्रॉपर्टी को 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 पर सेट है. इसका यह भी मतलब है कि हेडर myheader के लिए, प्रॉपर्टी ओवरराइट नहीं की गई है ,

  2. अगर आपको इनमें से कोई एक मैसेज दिखता है, तो इस सेक्शन में दिए गए बाकी निर्देशों का पालन करें:
    1. किसी खास हेडर से जुड़ी प्रॉपर्टी को ओवरराइट किया जाता है, ताकि डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति दी जा सके. जैसा कि ऊपर दिए गए सैंपल आउटपुट #1 में बताया गया है (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर)
    2. ऊपर दिए गए सैंपल आउटपुट #2 में, किसी खास हेडर से जुड़ी प्रॉपर्टी के लिए कोई हिट नहीं है. यह पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है

    अगर ऐसा नहीं है, तो इस सेक्शन में दिए गए बाकी चरण छोड़ दें.

  3. नीचे दी गई फ़ाइल में बदलाव करें. अगर यह मौजूद नहीं है, तो इसे बनाया जा सकता है.
    /opt/apigee/customer/application/message-processor.properties

    उदाहरण के लिए, viका इस्तेमाल करके फ़ाइल खोलने के लिए, यह डालें:

    vi /opt/apigee/customer/application/message-processor.properties
    
  4. प्रॉपर्टी फ़ाइल में, इस फ़ॉर्मैट में लाइन जोड़ें:

    पहले से मौजूद कॉन्फ़िगरेशन

    स्थिति #1: पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर:

    conf_http_HTTPHeader.Expires=

    पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है

    स्थिति #2: पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं है:

    conf/http.properties+HTTPHeader.myheader=
  5. बदलावों को सेव करें.
  6. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक, apigee उपयोगकर्ता के पास हो. अगर ऐसा नहीं है, तो ये काम करें:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
    
  7. मैसेज प्रोसेसर को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    

    ट्रैफ़िक पर असर डाले बिना मैसेज प्रोसेसर को फिर से चालू करने के लिए, ट्रैफ़िक पर असर डाले बिना मैसेज प्रोसेसर को फिर से चालू करने की सुविधा देखें.

  8. अगर आपके पास एक से ज़्यादा मैसेज प्रोसेसर हैं, तो ऊपर बताया गया तरीका सभी मैसेज प्रोसेसर के लिए दोहराएं.

पुष्टि करना कि हेडर को डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति न देने के लिए कॉन्फ़िगर किया गया है

इस सेक्शन में, यह पुष्टि करने का तरीका बताया गया है कि किसी खास हेडर के लिए प्रॉपर्टी HTTPHeader.HEADER_NAME को मैसेज प्रोसेसर पर डुप्लीकेट की अनुमति न देने के लिए, अपडेट किया गया है या नहीं.

हम Expires (और myheader) का इस्तेमाल हेडर के उदाहरण के तौर पर करेंगे. साथ ही, जांच करेंगे कि इससे जुड़ी प्रॉपर्टी HTTPHeader.Expires (और HTTPHeader.myheader) अपडेट हुई है या नहीं.

  1. मैसेज प्रोसेसर मशीन पर, /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
    
  2. अगर मैसेज प्रोसेसर पर नए एचटीटीपी हेडर की वैल्यू HTTPHeader.HEADER_NAME I के लिए सेट हो जाती है, तो ऊपर दिया गया निर्देश, http.properties फ़ाइल में नई वैल्यू दिखाता है.
  3. allowDuplicates को बंद करने के बाद, ऊपर दिए गए निर्देश का सैंपल नतीजा इस तरह दिखेगा:

    पहले से मौजूद कॉन्फ़िगरेशन

    स्थिति #1: Expires हेडर (पहले से मौजूद कॉन्फ़िगरेशन) वाला हेडर

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.Expires=

    पहले से कोई कॉन्फ़िगरेशन मौजूद नहीं है

    स्थिति #2: myheader हेडर (पहले से मौजूद कॉन्फ़िगरेशन वाला हेडर नहीं)

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPHeader.myheader=
  4. ऊपर दिए गए उदाहरण के आउटपुट में, ध्यान दें कि प्रॉपर्टी HTTPHeader.Expires ( और HTTPHeader.myheader ) को नई वैल्यू {blank} in http.properties के साथ सेट किया गया है. इससे पता चलता है कि मैसेज प्रोसेसर पर, किसी खास एचटीटीपी हेडर Expires (और myheader) के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू की अनुमति देने की सुविधा को बंद कर दिया गया है.
  5. अगर आपको अब भी प्रॉपर्टी HTTPHeader.Expires (or HTTPHeader.myheader) की पुरानी वैल्यू दिखती है, तो पुष्टि करें कि आपने हेडर के लिए allowDuplicates और कई वैल्यू कॉन्फ़िगर करने के बारे में बताए गए सभी चरणों को सही तरीके से पूरा किया है. अगर आपने कोई चरण छोड़ा है, तो सभी चरणों को सही तरीके से दोहराएं.

    पक्का करें कि आपकी प्रॉक्सी उम्मीद के मुताबिक काम कर रही हों. खास तौर पर तब, जब प्रॉक्सी में हेडर पाने और सेट करने के लिए कोई फ़ंक्शनल लॉजिक हो.

  6. अगर अब भी प्रॉपर्टी में बदलाव नहीं हो पा रहा है, तो Apigee Edge की सहायता टीम से संपर्क करें.