Windows의 파일 탐색기 "네트워크 드라이브 연결"이 승인되지 않은 HTTP OPTIONS 요청을 생성합니다.

Windows의 파일 탐색기 "네트워크 드라이브 연결"이 승인되지 않은 HTTP OPTIONS 요청을 생성합니다.

우리는 Windows의 파일 탐색기 클라이언트에 서비스를 제공하려는 Java로 WebDAV 서버를 개발 중입니다. curl좋은 응답을 제공하는 다음 명령을 실행할 수 있습니다 .

>curl -i -X OPTIONS http://localhost:8080/storage-explorer/rest/dav -u joe:JoeSchmo1!

명령에서와 동일한 사용자 및 비밀번호를 지정하면서 파일 탐색기를 사용하여 "네트워크 드라이브 연결"을 시도하면 curl"인증되지 않은" 응답을 받습니다.

여기에 이미지 설명을 입력하세요

우리는 Windows의 파일 탐색기 클라이언트에 서비스를 제공하려는 Java로 WebDAV 서버를 개발 중입니다. 좋은 응답을 제공하는 다음 컬 명령을 실행할 수 있습니다.

컬 -i -X ​​옵션 http://localhost:8080/storage-explorer/rest/dav -u joe:JoeSchmo1! 컬 명령에서와 동일한 사용자 및 비밀번호를 지정하면서 파일 탐색기를 사용하여 "네트워크 드라이브 연결"을 시도하면 "인증되지 않은" 응답을 받습니다.

WireShark를 사용하여 요청과 응답을 조사했습니다. 에 대해서는 curl다음이 표시됩니다.

OPTIONS /storage-explorer/rest/dav HTTP/1.1
Host: localhost:8080
Authorization: Basic am9lOkpvZVNjaG1vMSE=
User-Agent: curl/8.4.0
Accept: */*

HTTP/1.1 200 OK
Expires: 0
Cache-Control: no-cache, no-store, must-revalidate
Server: milton.io-3.0.0.1
Pragma: no-cache
DAV: 1, 2
Accept-Ranges: bytes
Date: Wed, 27 Mar 2024 17:46:05 GMT
Allow: HEAD, PROPFIND, REPORT, OPTIONS, HEAD, PROPPATCH
Connection: keep-alive
Content-Length: 0
MS-Author-Via: DAV

파일 탐색기의 경우 다음이 표시됩니다.

OPTIONS /storage-explorer/rest/dav HTTP/1.1
Connection: Keep-Alive
User-Agent: Microsoft-WebDAV-MiniRedir/10.0.19045
translate: f
Host: localhost:8080

HTTP/1.1 401 Unauthorized
Expires: 0
Connection: keep-alive
WWW-Authenticate: Basic realm="ApplicationRealm"
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/html;charset=UTF-8
Content-Length: 71
Date: Wed, 27 Mar 2024 18:06:34 GMT

<html><head><title>Error</title></head><body>Unauthorized</body></html>

또 다른 이상한 점은 요청에 대한 웹앱 로그에서 활동을 볼 수 있지만 curl파일 탐색기 요청에 대한 활동은 볼 수 없다는 것입니다.

서로 다른 응답을 발생시키는 두 OPTIONS 요청의 중요한 차이점은 무엇입니까? 허용 가능한 요청(예: 's'에 해당하는 요청)을 생성하도록 파일 탐색기에서 무엇을 할 수 있습니까 curl?

이를 바탕으로기사, http를 허용하도록 설정 regedit을 수정 하곤 했지만 HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel별 차이가 없었습니다.

디버깅 제안에 열려 있습니다.

답변1

중요한 차이점은 이 부분입니다.

Authorization: Basic am9lOkpvZVNjaG1vMSE=

"Basic"이라는 단어 뒤의 문자열은 사용자 이름과 비밀번호를 base64로 인코딩한 것입니다. 귀하의 WebDAV 서버는 분명히 이 리소스에 대한 익명 액세스를 허용하지 않습니다.

귀하의 페이지와 서버 코드가 어떻게 프로그래밍되어 있는지 알 수 없지만 입력된 사용자 이름/비밀번호는 생성된 요청 내에서 서버로 전달되지 않는 것 같습니다.

헤더를 통해 사용자/비밀번호를 전달하는 대신 Authorization URL에 추가된 쿼리 매개변수(예: http://example.com?u=username,p=password. 또 다른 옵션은 다음과 같습니다 .http://username:[email protected]/

WebDAV 서버는 이러한 매개변수를 이해하도록 프로그래밍되어야 합니다.

관련 정보