Web登录Authorization验证

WBOY
Freigeben: 2016-08-08 09:06:48
Original
1964 Leute haben es durchsucht

通过Http访问服务器的一个服务软件的数据,浏览器会弹出以下验证弹框:
Web登录Authorization验证

由于想用PHP curl方法获取数据,但不知道怎么设置用户名和密码验证参数:
这样发现不起作用:

<code>curl_setopt($curl, CURLOPT_USERPWD, "name:pwd"); 
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); </code>
Nach dem Login kopieren
Nach dem Login kopieren

使用postman模拟登陆登陆以后我发现请求头里面有一项:
Web登录Authorization验证

然后在PHP curl方法里面加了一个请求头:

<code>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Authorization:Basic TnhFY29AMjAxNjojQGlIeVg0eStHUFE='));</code>
Nach dem Login kopieren
Nach dem Login kopieren

这样就能请求到数据了。
但问题是由于脚本需要放到服务器上一直运行,这种写死的验证过期就又验证失败,没有权限了。
怎么能够设置php Curl 用户名密码参数 方法一直验证登录呢?

回复内容:

通过Http访问服务器的一个服务软件的数据,浏览器会弹出以下验证弹框:
Web登录Authorization验证

由于想用PHP curl方法获取数据,但不知道怎么设置用户名和密码验证参数:
这样发现不起作用:

<code>curl_setopt($curl, CURLOPT_USERPWD, "name:pwd"); 
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); </code>
Nach dem Login kopieren
Nach dem Login kopieren

使用postman模拟登陆登陆以后我发现请求头里面有一项:
Web登录Authorization验证

然后在PHP curl方法里面加了一个请求头:

<code>curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json','Authorization:Basic TnhFY29AMjAxNjojQGlIeVg0eStHUFE='));</code>
Nach dem Login kopieren
Nach dem Login kopieren

这样就能请求到数据了。
但问题是由于脚本需要放到服务器上一直运行,这种写死的验证过期就又验证失败,没有权限了。
怎么能够设置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);</url></code>
Nach dem Login kopieren

  1. 使用CURL模拟登录拿到Authorization Token

  2. 使用第1步拿到的Token进行下一步请求

第1步中的Token可以适当做下缓存,缓存时间视服务端而定。
题外话:个人感觉服务端那边是Yii2写的。

之前有做过类似的 搞了半天觉得太麻烦,最终用phantomjs解决。php调用node程序。

添加个这属性

<code>$user = 'hello';
$pass = '$world';
curl_setopt($ch, CURLOPT_USERPWD, "{$user}:{$pass}");  </code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!