जवाबों:
यह HTTP referer
हेडर में उपलब्ध है । आप इसे एक सर्वलेट में प्राप्त कर सकते हैं:
String referrer = request.getHeader("referer"); // Yes, with the legendary misspelling.
हालाँकि, आपको यह महसूस करने की आवश्यकता है कि यह एक क्लाइंट-नियंत्रित मूल्य है और इस प्रकार किसी चीज़ को पूरी तरह से अलग या हटा दिया जा सकता है। इस प्रकार, जो भी मूल्य वापस आता है, आपको उसका उपयोग बैकएंड में किसी भी महत्वपूर्ण व्यावसायिक प्रक्रियाओं के लिए नहीं करना चाहिए, बल्कि केवल प्रस्तुति नियंत्रण के लिए (जैसे कुछ शुद्ध लेआउट भागों को छिपाना / दिखाना / बदलना) और / या आँकड़े।
रुचि के लिए, विकिपीडिया में गलत वर्तनी के बारे में पृष्ठभूमि पाई जा सकती है ।
null
।
वास्तव में यह है:
request.getHeader("Referer")
या इससे भी बेहतर, और 100% निश्चित होना
request.getHeader(HttpHeaders.REFERER)
, जहां HttpHeaders हैcom.google.common.net.HttpHeaders
getHeader(String name)
(उद्धरण):"The header name is case insensitive."
org.apache.http.HttpHeaders
जैसा कि सभी ने उल्लेख किया है
request.getHeader("referer");
मैं स्वीकृत उत्तर के विपरीत संदर्भ शीर्ष लेख के सुरक्षा पहलू के बारे में कुछ और विवरण जोड़ना चाहूंगा । ओपन वेब एप्लीकेशन सिक्योरिटी प्रोजेक्ट ( ओडब्ल्यूएएसपी ) में चिट शीट धोखा देती है, क्रॉस-साइट रिक्वेस्ट फॉरगेरी (सीएसआरएफ) प्रिवेंशन चीट शीट के तहत इसमें रेफर हेडर के महत्व के बारे में उल्लेख किया गया है ।
यह समान रूप से अनुशंसित मूल उत्पत्ति की जांच के लिए, कई HTTP अनुरोध हेडर जावास्क्रिप्ट द्वारा निर्धारित नहीं किए जा सकते हैं क्योंकि वे 'निषिद्ध' हेडर सूची में हैं। केवल ब्राउज़र ही इन हेडरों के लिए मान निर्धारित कर सकते हैं, जिससे उन्हें अधिक भरोसेमंद बनाया जा सकता है क्योंकि एक XSS भेद्यता का उपयोग उन्हें संशोधित करने के लिए भी नहीं किया जा सकता है।
सोर्स ओरिजिनल चेक की सिफारिश की गई है, ये तीनों संरक्षित हेडर पर निर्भर करता है: ओरिजिन, रेफर और होस्ट, यह अपने आप में एक बहुत मजबूत सीएसआरएफ रक्षा बनाता है।
आप यहाँ निषिद्ध हेडर सूची का उल्लेख कर सकते हैं । उपयोगकर्ता एजेंट (यानी: ब्राउज़र) का पूरा नियंत्रण इन हेडर पर है न कि उपयोगकर्ता पर।