0
私はAPIエンドポイントを構築しています。このエンドポイントは、HTTP基本認証で保護する必要があります。データが正しくない場合のPHP基本認証setHeader
APIリクエストがアクセスされている場合、http基本認証を表示したい場合は、データが正しくない場合は403禁止メッセージを送信します。データが正しい場合は、現時点では単に「正しい」と表示するだけです。ここに私のコード:
$username = null;
$password = null;
// if data is sent
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW'];
//perforn check if data is correct
if($username == 'as' && $password = 'pass'){
die(var_dump("correct"));
}
//if data uncorrect throw 403 code
else
header('HTTP/1.0 403 Forbidden');
}
//request HTTP auth if nothing sent
if (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die();
}
私のコードは、常に403をトリガしています。どのように私の要件に一致するこれを修正する上の任意のアイデア?
このスクリプトは、すべてのサーバーでは動作しません、私は、Webサーバー上でそれを試してみましたが、スクリプトは、ログインをポップアップ続けます私はlocalhostサーバー上でそれをテストし、それは完全に働いた.. – Jer
これはなぜ発生するか?私のローカルdevのセットアップで私はMAMP(ApacheのWebサーバー)を使用します。 –
これはなぜ起こったのかまだ分かりませんでしたが、私は思うに 'HTTP_AUTHORIZATION'と関係があります。以下の答えを見てください。正しい答えでしょうか? – Jer