2008-11-26 20 views
9

में पुट ट्रेस डिलीट अनुरोध को अक्षम करने के लिए मुझे को PUT अक्षम करने की आवश्यकता है, & TRACE HTTP अनुरोध मेरे अनुप्रयोग सर्वर, अपाचे टॉमकैट 6.0 पर।अपाचे टॉमकैट 6.0

अन्य सभी स्रोतों, मैंने अब तक खोज की है, मुझे httpd.conf में सीमा पैरामीटर की ओर निर्देशित किया है, इसलिए मैं इसे पहले हाथ में रखूंगा कि मैं अपाचे वेब सर्वर का उपयोग नहीं कर रहा हूं, और अनुरोध सीधे हैं टॉमकैट द्वारा संभाला जा रहा है, और इसलिए चित्र में httpd.conf नहीं है।

कृपया सुझाव दें कि मैं इसे टोमकैट पर कैसे करूँ? वैकल्पिक रूप से

<security-constraint> 
    <web-resource-collection> 
      <web-resource-name>Forbidden</web-resource-name> 
      <url-pattern>/blah/*</url-pattern> 
      <http-method>PUT</http-method> 
      <http-method>DELETE</http-method> 
      <http-method>TRACE</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
      <role-name>empty_role</role-name> 
    </auth-constraint> 
</security-constraint> 

, आप इन दो कर सकते हैं::

server.xml में, <connector> तत्व संपादित करते हैं, एक विशेषता जोड़ने

उत्तर

19

अपने WEBINF के अंदर, आप एक सुरक्षा बाधा जोड़ सकते हैं जोड़ें: allowTrace="false"। तब DefaultServlet संपादित: $ CATALINA_HOME/conf/web.xml

<servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class> 
     org.apache.catalina.servlets.DefaultServlet 
    </servlet-class> 
    <!-- blah blah blah --> 
    <init-param> 
     <param-name>readonly</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</servlet> 
+0

धन्यवाद जेम्स, क्या होना चाहिए, अगर मैं इसे ऐप के web.inf के बजाय सर्वर के web.inf में जोड़ रहा हूं? (वेबब्रॉट \ conf \ web.xml) –

+1

एक वाइल्डकार्ड जैसे '/ *' काम करना चाहिए, मुझे लगता है। –

0

जवाब सर्वलेट विनिर्देश में निहित है। सर्वलेट के लिए एपीआई को देखने में: http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/HttpServlet.html आप देखेंगे कि विभिन्न विधियां विभिन्न प्रकार के HTTP अनुरोधों को संभालती हैं। साथ ही, फिल्टर नामक एक शानदार सुविधा है जिसका उपयोग सर्लेट और फ़िल्टर के आसपास कुछ कोड लपेटने के लिए किया जा सकता है।

तो समाधान हैं:

  • केवल समर्थन करने के लिए सर्वलेट को संशोधित करते हैं और मिल; या
  • उन अन्य प्रकार के अनुरोधों को साफ़ करने के लिए फ़िल्टर बनाएं।
+2

सर्वलेट्स को संशोधित करना सबसे अच्छा पासा प्रस्ताव है। DoPut, doDelete, आदि को ओवरराइड करने के लिए फ्रेमवर्क को संशोधित करना संभव नहीं हो सकता है, इसके लिए * प्रत्येक * सर्वलेट को संशोधित किया जाना चाहिए जो त्रुटि-प्रवण प्रक्रिया है। फ़िल्टर शायद एक बेहतर दृष्टिकोण है और सबसे अधिक नियंत्रण प्रदान करता है। –

संबंधित मुद्दे