tomcat - रिवर्स प्रॉक्सी के पीछे JSESSIONID कुकी पथ को सही तरीके से कैसे सेट करें




reverse-proxy (2)

Tomcat6 Servlet 2.3 spec का उपयोग करता है। यह या तो कोड या टॉमकैट कॉन्फ़िगरेशन के माध्यम से कुकी पथ को बदलने का समर्थन नहीं करता है।

मुझे अपाचे पक्ष से कुछ mod_proxy निर्देशों के साथ काम करने के लिए मिला। ProxyPassReverseCookiePath निर्देश वही करता है जो मैं चाहता हूं। यह कुकी को गलत पथ के साथ टोमकैट से ले जाता है और इसे सही पथ पर फिर से लिखता है।

<VirtualHost *:*>
    Servername example.com
    ProxyRequests Off
    ProxyPass / http://localhost:8080/example.com/
    ProxyPassReverseCookiePath /example.com /
    ProxyPassReverseCookieDomain localhost example.com
</VirtualHost>

मेरा वेब ऐप http://localhost:8080/example.com/ पर टॉमकैट में चल रहा है http://localhost:8080/example.com/ लेकिन यह अपाचे से प्रॉक्सी हो रहा है जो पोर्ट 80 पर http://example.com/ सेवा कर रहा है। मेरा वेब ऐप देखता है request.getHeader("x-forwarded-host") हेडर यह जानने के लिए है कि यह एक रिवर्स प्रॉक्सी के पीछे है। जब यह इस (गतिशील रूप से) का पता लगाता है तो यह उन पर सर्वलेट पथ के बिना यूआरएल बनाता है।

यह JSESSIONID कुकी को छोड़कर सब कुछ के लिए ठीक काम करता है। इसे रिवर्स प्रॉक्सी के माध्यम से एक्सेस /example.com बजाय /example.com पथ के साथ सेट किया जाता है। मैं यह नहीं समझ सकता कि अनुरोध पर x-forwarded-host हेडर होने पर मैं उस कुकी के पथ को ओवरराइड करने के लिए टोमकैट को कैसे बता सकता हूं।

मैंने JSESSIONID कुकी को वेब ऐप से स्वयं सेट करने का प्रयास किया है, लेकिन यह केवल दो सेट-कुकी हेडर में परिणाम देता है, जिनमें से केवल एक सही है।


वैकल्पिक रूप से नोड / संदर्भ (फ़ाइल: /conf/context.xml) के विशेषता सत्र CookiePath को "/" पर सेट करें:

<Context sessionCookiePath="/">

अधिक जानकारी के लिए http://tomcat.apache.org/tomcat-7.0-doc/config/context.html पर एक नज़र डालें





jsessionid