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

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 को भेजे गए एचटीटीपी रिस्पॉन्स शामिल हैं.

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

multivalued, allowDuplicate,

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

HTTPHeader.HEADER_NAME

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

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

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

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

कॉन्फ़िगरेशन को बदला गया

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

  • HTTPHeader.HEADER_NAME=multivalued, allowDuplicate

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

    .
  • 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= के मान के आधार पर आउटगोइंग हेडर
<खाली> allowDuplicate 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 प्रॉपर्टी को कॉन्फ़िगर करने का तरीका बताया गया है. इस तरह, Message प्रोसेसर पर इस तरह के किसी भी एचटीटीपी हेडर के लिए डुप्लीकेट और एक से ज़्यादा वैल्यू को अनुमति दी जा सकती है. इसके लिए, 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 को अपडेट किया गया है या नहीं.

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

  1. 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
    
  2. अगर Message प्रोसेसर पर 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 प्रॉपर्टी की पुरानी वैल्यू दिखती है, तो पुष्टि करें कि आपने Allowडुप्लीकेट और हेडर के लिए एक से ज़्यादा वैल्यू कॉन्फ़िगर करना में बताए गए तरीके का सही तरीके से पालन किया है. अगर आपसे कोई चरण छूट गया है, तो सभी चरणों को फिर से सही तरीके से दोहराएं.

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

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

हेडर के लिए, allowडुप्लीकेट को बंद करना

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

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

  1. प्रॉपर्टी की मौजूदा वैल्यू तय करें. 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
    

    ऊपर दिए गए निर्देश के आउटपुट से, इनमें से कोई एक नतीजा मिलता है:

    1. प्रॉपर्टी को ब्लैंक पर सेट करने के बाद, इससे पता चलता है कि वैल्यू को बदलकर NOT किया गया है, ताकि डुप्लीकेट हेडर और एक से ज़्यादा वैल्यू को इस्तेमाल करने की अनुमति दी जा सके. इसलिए, आपके पास एचटीटीपी अनुरोध के हिस्से के तौर पर या 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 पर सेट है. इसका मतलब यह भी है कि मेरे हेडर के लिए प्रॉपर्टी ओवरराइट नहीं की गई है ,

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

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

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

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

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

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

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

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

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