0

基本認証を使用して保護されているサーバーにデプロイされた API があります。

また、API を呼び出す必要がある API が実行されている同じサーバー上でスクリプトを実行しています。

スクリプト: test.php

<?php
$url = 'https://my_site.myapi/account/add/{"account_id":"1234555"}
$username = 'myname';
$password = 'mypassword';
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERPWD, $username.":".$password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data = curl_exec($ch);
curl_close($ch);

ブラウザから test.php を呼び出そうとすると:

https://my_site.myapi/test.php

ユーザー名とパスワードについて昇格しました。エラー メッセージが表示されません。何か案は?

VirtualHost セクション

DocumentRoot /var/www/mysite/web/
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/api_section_1">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/local/apache/passwd/passwords
</Directory>

Alias /winapi /var/www/another_section/
<Directory "/var/www/another_section">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /usr/local/apache/passwd/passwords
</Directory>
4

2 に答える 2

1

If you're getting prompted for a password, that's not coming from your curl call, but rather apache. My guess is that your https://my_site.myapi/test.php page is also mistakenly protected by the basic auth.

curl_exec() would return an error indicating that authentication was required, not prompt you for it.

于 2012-11-14T20:34:12.457 に答える
0

基本認証でエンコーディングを想定していますか? たとえば、ユーザー名とパスワードのトークンを base64 でエンコードする必要がある場合があります。

もう 1 つチェックする必要があるのは、詳細が Authorization ヘッダーに含まれていることです。リクエスト ヘッダーをチェックして、これが当てはまるかどうかを確認してください。

于 2012-11-14T19:46:00.610 に答える