WebDav를 통해 컬렉션을 만들 때 컬렉션의 이름이 슬래시로 끝나면

StackOverflow https://stackoverflow.com/questions/131754

  •  02-07-2019
  •  | 
  •  

문제

내가 사용하고있는 WebDav 라이브러리 가이 요청을 발행하고 있습니다

MKCOL /collection HTTP/1.1

/수집이 존재하기 때문에 Apache가 301을 발행하는 곳

HTTP/1.1 301
Location: /collection/

a보다는

HTTP/1.1 405 Method Not Allowed

사양은 이것에 대해 약간 모호합니다 (또는 제가 읽기가 될 수도 있습니다). 그러나 MKCOL을 발행 할 때 컬렉션의 이름이 항상 슬래시로 끝나야합니까 (컬렉션이므로)?

도움이 되었습니까?

해결책

HTTP Code 301은 알고 있듯이 "영구적으로 이동"을 의미합니다.

Apache는 당신을 적절한 URL로 기꺼이 리디렉션합니다. 제공 한 URL에는 리소스가 없기 때문에 405를 줄 수 없습니다. 그러나 정확한 URL로 리소스를 생성 할 수는 없습니다. 그것이 할 수있는 일은 적절한 URL로 리소스를 만들고 리디렉션하는 것입니다.

그러나 질문에 답하기 위해 "/"로 모호한 모호성을 제거해야합니다. 그렇지 않으면 결과 URI 정규화 동작은 내가 믿는 서버에 달려 있습니다. 나는 RFC에 의해 후행 슬래시가 의무화된다는 것을 추가한다고 생각하지 않습니다.

편집하다:

MKCOL은 후행 슬래시없이 성공할 수 있지만, 생성 된 자원에는 후행 슬래시가 있습니다.

RFC에 따르면 서버에는 옵션이 있습니다. 사양을 위반하지 않는 한 URL 정규화 절차를 결정하기 때문입니다.

그런 다음 서버는 모든 작업에서 보내는 URL을 정규화하여 3xx 코드를 많이 반환 할 수 있습니다. 이것은 비싸다. 또는 처음에는 (게시물, MKCOL 등) 교정 할 수 있습니다. 그런 다음 그 후에 실패하거나 리디렉션 할 수 있습니다.

그러나 핵심 요점은 항상 그것이 선호하는 URL을 알려줄 것입니다.

HTTP URL 체계의 무언가 RFC 2616

3.2.3 URI 비교

두 개의 uris를 비교하여 일치하는지 여부를 결정할 때 클라이언트
예외와 함께 전체 URI의 사례에 민감한 옥켓 별 비교를 사용해야합니다.

  - A port that is empty or not given is equivalent to the default
    port for that URI-reference;

    - Comparisons of host names MUST be case-insensitive;

    - Comparisons of scheme names MUST be case-insensitive;

    - An empty abs_path is equivalent to an abs_path of "/".

"예약 된"및 "안전하지 않은"세트의 문자 (참조)
RFC 2396 [42])는 ""%"hex hex"인코딩과 동일합니다.

예를 들어, 다음 세 가지 URI는 동일합니다.

  http://abc.com:80/~smith/home.html
  http://ABC.com/%7Esmith/home.html
  http://ABC.com:/%7esmith/home.html

ABS_PATH가 정의되는 방법에 대한 언급은 없습니다. 또한 서버는 사양에 따라 슬래시를 무시할 수 없습니다. 따라서 "MKCOL/COLLECTION"을 발행하고 새로운 "/Collection/"URL없이 일반 2XX를 얻는 것이 잘못되었습니다.

AFAIK, ABS_PATH를 정의하는 관련 RFC는 후행 슬래시를 지정하지 않습니다. 따라서 서버가 비교하고 정규화되는 방식에 대해 서버에 달려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top