Apache HTTP Server에서 모든 HTTP 메소드를 사용하는 방법


16

Apache 웹 서버에서 RFC 2616에 정의 된대로 모든 HTTP 메소드를 처리 할 수있게하려면 어떻게해야합니까? 이들은 :

OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT

Apache HTTP Server, 버전 2.2.22 (Ubuntu)를 사용하고 있습니다.
여기 내 .htaccess파일이 있습니다.

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

다음은 Telnet을 실행하여 얻은 결과입니다. 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 / 2.2.22 (우분투)

1
/output위치 에서 방법을 제한하고 있지만 위치를 요구 OPTIONS하고 /있습니다. 방법 제한은 상위 위치에는 적용되지 않으며 더 깊은 위치에만 적용됩니다.
lanzz

답변:


7

Apache는 정적 컨텐츠 (Apache에서 직접 제공 한 실제 파일)에 대한 모든 관련 HTTP 메소드를 구현합니다. 동적 컨텐츠 (CGI 스크립트 mod_php등)의 경우 Apache는 HTTP 메소드가 무엇인지 상관하지 않으며 ( <Limit>지시문 으로 명시 적으로 제한되지 않는 한 ) 요청을 그대로 적절한 핸들러로 전달합니다. 스크립트는 Apache가 아닌 특정 방법을 의도 한대로 처리해야합니다. 비표준 메소드조차도 문제없이 동적 핸들러로 전달됩니다.

스크립트가 ASDFG / HTTP/1.1처리 한 잘못된 요청으로 테스트되었습니다 mod_php. 받은 아파치에서 아무 불만 없습니다 ASDFG에서 $_SERVER['REQUEST_METHOD']핸들러 스크립트.


답변 주셔서 감사합니다. http 메소드를 허용하기 위해 .htaccess 파일을 편집했습니다. 텔넷을 통해 OPTIONS / 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은 USING 구성 파일 Limit method [method] ... > ... </Limit>지시문

기본적으로 메소드를 차단하는 데 사용되는 옵션과 같은 옵션 을 주석 처리 해야합니다.

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


1

이 문제를 해결하는 확실한 방법은 Apache가 특정 경우에 요청 거부하는 이유를 배우는 것 입니다. 오류 로그에서이를 배울 수 있습니다.

내 경우에는 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. 해당 파일을 편집하면 내 문제가 해결되었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.