Apache는 존재하지 않는 단순 콜렉션 리소스에 대해 400 개의 잘못된 요청을 보내고있는 것처럼 보입니다.Apache mod_dav 400 존재하지 않는 수집 리소스에 대한 요청이 잘못되었습니다.
나는 리소스가 /test/junit/test.bin
입니다. /test/junit/test.bin/
콜렉션 (즉, 같은 이름의 콜렉션)이 있는지 확인하고 싶습니다. RFC 2518에 따르면 콜렉션 (슬래시 포함)과 콜렉션이 아닌 것이 구별됩니다. /test/junit/test.bin/
에 PROPFIND
을 발행하면 Apache는 400 개의 잘못된 요청으로 응답합니다.
많은 사람들과 구현으로 인해 콜렉션과 비 콜렉션 간의 경계가 흐려진다는 사실을 알게되었습니다. 즉, 콜렉션에 슬래시가 있어야하는지 여부가 이해됩니다. 그러나 어떤 경우이든 컬렉션 /test/junit/test.bin/
이 존재하지 않습니다. 존재하지 않는 컬렉션에서 PROPFIND
을 발행하는 것은 "잘못된 요청"이 아닙니다. 아파치가 단순히 표준 404를 찾지 못했는지 아니면 410을 찾지 않았는가? 내 요청에 대해 "나쁜"것은 무엇입니까?
PROPFIND /test/junit/test.bin/ HTTP/1.1
depth: 1
content-length: 102
authorization: BASIC XXXXX
host: example.com
<?xml version="1.0" encoding="UTF-8"?>
<D:propfind xmlns:D="DAV:">
<D:allprop />
</D:propfind>
HTTP/1.1 400 Bad Request
Date: Mon, 23 Jan 2012 15:30:37 GMT
Server: Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8k DAV/2 SVN/1.7.2 mod_jk/1.2.28
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
여기에 아파치가 로그에두고 작업은 다음과 같습니다
[Mon Jan 23 14:31:09 2012] [error] [client XX.XXX.XX.XXX] Could not fetch resource information. [400, #0]
[Mon Jan 23 14:31:09 2012] [error] [client XX.XXX.XX.XXX] (20)Not a directory: The URL contains extraneous path components. The resource could not be identified. [400, #0]
예, 저도 같은 이름의 자원이 존재하고 내가 컬렉션의 속성에 대한 부탁 해요 이해합니다. 그래서 우리는 "이것이 아파치가 이것을하는 이유입니다"라고 말할 수 있습니다. 그러나 이것은 아무 것도 설명하지 않습니다. 이것은 단순히 아파치가 할 일에 대한 예측 일뿐입니다. 아파치가 404가 아닌 400을 돌려주는 것이 더 적절하다고 생각하는 이유를 알고 싶습니다.
아파치가 오류 로그에 세부 정보를 표시하는지 궁금합니다. 오류 로그 레벨을 상당히 높게 설정할 수 있습니다. – Evert
좋은 생각 --- 로그에서 관련 항목을 추가했습니다. 그것은 당신이 추측 할 수있는 것입니다. 나는 여기 아파치의 접근 방식에 동의하지 않는다. –
아파치에 버그를 제출했습니다 : https://issues.apache.org/bugzilla/show_bug.cgi?id=52539 –