Apache에 사용자 이름과 비밀번호가 포함된 URL에 대한 인증이 필요한 이유는 무엇입니까?

Apache에 사용자 이름과 비밀번호가 포함된 URL에 대한 인증이 필요한 이유는 무엇입니까?

Apache에서 기본 인증을 구축합니다 /var/www/html/remote.html. .

<p>it is a test </p>

이제 컬을 사용하여 사용자 이름과 비밀번호를 확인합니다.

curl -u xxxx:xxxx -v  http://111.111.111.111/remote.html
*   Trying 111.111.111.111...
* TCP_NODELAY set
* Connected to 111.111.111.111 (111.111.111.111) port 80 (#0)
* Server auth using Basic with user 'xxxx'
> GET /remote.html HTTP/1.1
> Host: 111.111.111.111
> Authorization: Basic dGVzdHBhc3M6MTIzNDU2Nzg=
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Fri, 07 Sep 2018 03:32:42 GMT
< Server: Apache/2.4.6 (CentOS)
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: Authorization,DNT,User-Agent,Keep-Alive,Content-Type,accept,origin,X-Requested-With
< Last-Modified: Fri, 07 Sep 2018 03:22:41 GMT
< ETag: "b2-5753f8537e26c"
< Accept-Ranges: bytes
< Content-Length: 178
< Content-Type: text/html; charset=UTF-8
< 

<p>it is a test </p>
* Curl_http_done: called premature == 0
* Connection #0 to host 111.111.111.111 left intact

브라우저에 입력하면 http://111.111.111.111/remote.html?username=xxxx&password=xxxx인증 창이 나타납니다.

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

URL에 컬로 확인된 올바른 사용자 이름과 비밀번호가 포함되어 있습니다. 왜 remote.html을 직접 표시할 수 없나요?
내 URL이 http://111.111.111.111/remote.html?username=xxxx&password=xxxxApache 서버에 인증 정보를 제공할 수 없는 이유는 무엇입니까?

답변1

기본 인증 URL은 다음과 같습니다.

http://testpass:[email protected]/remote.html

답변2

HTTP 기본 인증 자격 증명은 클라이언트에서 서버로 특정 헤더로 전송됩니다.~ 아니다그런 식으로 URL에 추가됩니다. 이것을 참고하면 이를 확인할 수 있습니다.

curl http://111.111.111.111/remote.html?username=xxxx&password=xxxx

또한 작동하지 않습니다. -u플래그는 이를 다르게 보내는 것을 알고 있으며 브라우저는 그렇게 합니다.제공된 양식에 자격 증명을 입력하면.

답변3

다음을 사용하고 또한 확인하십시오다른 답변그리고로그인 CLI 진입 방법

curl --user user:pass http://myweb.com/hello.html  

관련 정보