Apache HTTP सर्वर में सभी HTTP मेथड को कैसे इनेबल करें


16

मैं अपाचे वेब सर्वर पर RFC 2616 में परिभाषित सभी HTTP तरीकों को कैसे सक्षम कर सकता हूं? ये होंगे:

OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT

मैं अपाचे HTTP सर्वर का उपयोग कर रहा हूं, संस्करण २.२.२२ (उबंटू)
यहां मेरी .htaccessफाइल है:

<Location /output>
        Dav On
    <LimitExcept GET HEAD OPTIONS PUT>
        Allow from all
    </LimitExcept>
</Location>

यहाँ आउटपुट मुझे टेलनेट चलाने से मिलता है - कोई PUT विधि नहीं है:

Escape character is '^]'.
OPTIONS / HTTP/1.0

HTTP/1.1 200 OK
Date: Tue, 09 Oct 2012 06:56:42 GMT
Server: Apache/2.2.22 (Ubuntu)
Allow: GET,HEAD,POST,OPTIONS
Vary: Accept-Encoding
Content-Length: 0
Connection: close
Content-Type: text/html

Connection closed by foreign host.

इस पर कोई विचार?


आप अपाचे के किस संस्करण का उपयोग करते हैं?

सर्वर संस्करण: Apache /

1
आप पर तरीकों को सीमित कर रहे हैं /outputस्थान है, लेकिन आप के लिए पूछ रहे हैं OPTIONSपर /स्थान। विधि सीमाएँ केवल मूल स्थानों पर लागू नहीं होतीं, केवल गहरे स्थानों तक।
lanzz

जवाबों:


7

अपाचे स्थिर सामग्री के लिए सभी प्रासंगिक HTTP विधियों को लागू करता है (वास्तविक फ़ाइलें सीधे अपाचे द्वारा सेवा की जाती हैं)। गतिशील सामग्री (सीजीआई स्क्रिप्ट, mod_phpआदि) के लिए, अपाचे को परवाह नहीं है कि एचटीटीपी विधि क्या है (जब तक कि यह स्पष्ट रूप से एक <Limit>निर्देश के साथ प्रतिबंधित नहीं है ), और उपयुक्त हैंडलर के लिए अनुरोध पारित करता है। आपकी स्क्रिप्ट को विशिष्ट विधि को संभालने की आवश्यकता है, अपाचे को नहीं। यहां तक ​​कि गैर-मानक तरीके गतिशील हैंडलर को बिना किसी समस्या के पास किए जाते हैं।

ASDFG / HTTP/1.1एक mod_phpस्क्रिप्ट द्वारा नियंत्रित अमान्य अनुरोध के साथ परीक्षण किया गया । अपाचे से कोई शिकायत, प्राप्त ASDFGमें $_SERVER['REQUEST_METHOD']हैंडलर लिपि में।


आपके उत्तर के लिए धन्यवाद। मैंने कुछ http तरीकों की अनुमति देने के लिए अपनी .htaccess फ़ाइल को संपादित किया। मैंने टेलनेट पर विकल्प / HTTP / 1.0 के साथ जाँच की। अनुमत http तरीके कभी नहीं बदले। यह समस्या शायद अपाचे के बारे में नहीं है, लेकिन यह मेरे लिए अभी भी सभी http विधि को सक्षम करने के लिए एक समस्या है।

आपको संभवतः वही पोस्ट करना चाहिए जो आप कोशिश कर रहे हैं, आप किस प्रतिक्रिया को देखने की उम्मीद कर रहे हैं, आप इसके बजाय क्या देखते हैं, और आप सर्वर अनुरोध पर उन अनुरोधों को कैसे संभालते हैं। कुछ भी नहीं होना चाहिए OPTIONS, जब तक कि आप इसके साथ <Limit OPTIONS> deny from all </Limit>या समान पहुंच नियंत्रण के लिए मना न करें ।
lanzz

2

http://httpd.apache.org/docs/current/mod/core.html पर आधारित , इन तरीकों को निर्देश का उपयोग करके directoryऔर .htaccessकॉन्फ़िगरेशन फ़ाइलों में संशोधित किया जा सकता हैLimit method [method] ... > ... </Limit>

मूल रूप से आपको नीचे दिए गए विकल्पों की तरह टिप्पणी करनी होगी जिनका उपयोग विधियों को अवरुद्ध करने के लिए किया जाता है।

<Limit POST PUT DELETE>
  Require valid-user
</Limit>


1

इसे ठीक करने का निश्चित तरीका यह सीखना है कि अपाचे आपके विशेष मामले में अनुरोधों को अस्वीकार क्यों करता है । आप इसे त्रुटि लॉग से सीख सकते हैं।

मेरे मामले में, tail -f /usr/local/apache/logs/error_logयह दिया:

[Sun Sep 18 08:39:52.570672 2016] [:error] [pid 32076:tid 140086307448576] 
[client 93.125.93.77] ModSecurity: Access denied with code 501 (phase 2). 
Match of "rx ^((?:(?:POS|GE)T|OPTIONS|HEAD))$" against "REQUEST_METHOD" 
required. [file "/usr/local/apache/conf/modsec-imh/01_base_rules.conf"] [line 
"32"] [id "960032"] [msg "Method is not allowed by policy"] [severity 
"CRITICAL"] [tag "POLICY/METHOD_NOT_ALLOWED"] [hostname "104.244.122.237"] 
[uri "/products/order/items/45"] [unique_id "V96LGGj0eu0AAH1MR8sAAACB"]

यह एक सुरक्षा नियम का उल्लेख है और फ़ाइल यह से आ रहा है: /usr/local/apache/conf/modsec-imh/01_base_rules.conf। उस फ़ाइल को संपादित करने से मेरी समस्या हल हो गई।


-1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.