java मुझे कैसे पता चलेगा कि HTTP या HTTPS का उपयोग कर सर्वलेट को अनुरोध निष्पादित किया गया था?




servlets ssl (4)

https और http विभिन्न बंदरगाहों पर चलता है। तो आप अनुरोध से पोर्ट प्राप्त कर सकते हैं और पता लगा सकते हैं कि अनुरोध किस पोर्ट से आया था और ताकि आप प्रोटोकॉल को जान सकें। int पोर्ट = request.getServerPort ();

मैंने जावा में एक सर्वलेट लिखा था और मैं जानना चाहता हूं कि HTTP या HTTPS का उपयोग करके उस सर्वलेट को अनुरोध निष्पादित किया गया था या नहीं।

मैंने सोचा कि मैं request.getProtocol() उपयोग कर सकता हूं लेकिन यह दोनों विधियों पर HTTP / 1.1 देता है।

कोई विचार?


isSecure विरासत विधियों की जांच करना सुनिश्चित करें।


आप विश्वसनीय रूप से बंदरगाह संख्याओं पर निर्भर नहीं कर सकते हैं।
लेकिन आप इस योजना पर निर्भर कर सकते हैं:

इसका उपयोग करें: request.getScheme() यह देखने के लिए कि यह https

यदि ऐसा है तो यह सुरक्षित कनेक्शन है।

मेरा मानना ​​है कि यह टॉमकैट संस्करण के बावजूद काम करना चाहिए


HttpSerlvetRequest.isSecure () जवाब है। ServletContainer निम्नलिखित मामलों में सत्य लौटने के लिए ज़िम्मेदार है:

  • यदि ServletContainer स्वयं https पर अनुरोध स्वीकार कर सकता है।
  • यदि ServletContainer के सामने एक लोडबैंसर है। और, लोडब्लैंसर को https पर अनुरोध मिला है और इसे सर्वलेट पर ServletContainer पर भेज दिया गया है। इस मामले में, लोडबैंसर एक्स-एसएसएल-सिक्योर भेजता है: ServletContainer को सच्चे हेडर भेजता है, जिसे सम्मानित किया जाना चाहिए।

Https पर अनुरोध प्राप्त होने पर कंटेनर को यह अनुरोध विशेषताओं को भी उपलब्ध कराया जाना चाहिए:

  • javax.servlet.http.sslsessionid
  • javax.servlet.request.key_size
  • javax.servlet.request.X509Certificate




http-protocols