透過Http存取伺服器的一個服務軟體的數據,瀏覽器會彈出以下驗證彈框:
由於想用PHP curl方法取得數據,但不知道怎麼設定使用者名稱和密碼驗證參數:
這樣發現不起作用:
<code>curl_setopt($curl, CURLOPT_USERPWD, "name:pwd"); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); </code>
使用postman模擬登陸登陸以後我發現請求頭裡面有一項:
接著在PHP curl方法裡面加了一個請求頭:
<code>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Authorization:Basic TnhFY29AMjAxNjojQGlIeVg0eStHUFE='));</code>
這樣就能請求到資料了。
但問題是由於腳本需要放到伺服器上一直運行,這種寫死的驗證過期就又驗證失敗,沒有權限了。
怎麼能夠設定php Curl 使用者名稱密碼參數 方法一直驗證登入呢?
透過Http存取伺服器的一個服務軟體的數據,瀏覽器會彈出以下驗證彈框:
由於想用PHP curl方法取得數據,但不知道怎麼設定使用者名稱和密碼驗證參數:
這樣發現不起作用:
<code>curl_setopt($curl, CURLOPT_USERPWD, "name:pwd"); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); </code>
使用postman模擬登陸登陸以後我發現請求頭裡面有一項:
接著在PHP curl方法裡面加了一個請求頭:
<code>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Authorization:Basic TnhFY29AMjAxNjojQGlIeVg0eStHUFE='));</code>
這樣就能請求到資料了。
但問題是由於腳本需要放到伺服器上一直運行,這種寫死的驗證過期就又驗證失敗,沒有權限了。
怎麼能夠設定php Curl 使用者名稱密碼參數 方法一直驗證登入呢?
這是PHP HTTP驗證,一般都不這麼乾,畢竟HTTP驗證太簡陋了
http://php.net/manual/zh/feat...
<code>$username='ABC'; $password='XYZ'; $URL='<URL>'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$URL); curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code $result=curl_exec ($ch); curl_close ($ch);</code>
使用CURL模擬登入拿到Authorization Token
使用第1步驟拿到的Token進行下一步請求
第1步驟中的Token可以適當做下緩存,快取時間視服務端而定。
題外話:個人感覺服務端那邊是Yii2寫的。
之前有做過類似的 搞了半天覺得太麻煩,最後用phantomjs解決。 php呼叫node程式。
加個這屬性
<code>$user = 'hello'; $pass = '$world'; curl_setopt($ch, CURLOPT_USERPWD, "{$user}:{$pass}"); </code>