Apache-2.4

為什麼apache需要使用使用者名和密碼對url進行授權?

  • September 7, 2018

我在 apache 中建立了基本授權。在 .Only 中只有一行/var/www/html/remote.html

<p>it is a test </p>

現在用 curl 驗證使用者名和密碼。

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中包含正確的使用者名和密碼,通過curl驗證,為什麼不能直接顯示remote.html?

為什麼我的 urlhttp://111.111.111.111/remote.html?username=xxxx&password=xxxx不能向 apache 伺服器提供授權資訊?

基本認證的 URL 是

http://testpass:12345678@111.111.111.111/remote.html

HTTP 基本身份驗證憑據在特定標頭中從客戶端發送到伺服器 - 它們不會以這種方式附加到 URL。您可以通過注意這一點來驗證這一點

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

也不起作用 - 標誌知道以不同的方式發送它,當您將憑據輸入提供的表單時,-u您的瀏覽器也會這樣做。

引用自:https://serverfault.com/questions/929817