.htaccess密码验证但允许发布请求

时间:2013-05-12 15:03:23

标签: .htaccess post curl

我想用密码保护我的域名,因为我只是用它来测试脚本,但我需要允许curl HTTP POST请求。这可能吗?

当前.htaccess:

#AuthUserFile /home/domain/.htpasswds/.htpasswd
#AuthType Basic
#AuthName "Protected Domain"
#Require valid-user

PHP卷曲请求

    $handle = curl_init('http://wwww.domain.com/cgi/mailScript.php');
    curl_setopt($handle, CURLOPT_POST, 1);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $serial);
    curl_exec($handle);

PHP错误:

Authorization Required

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required.

Additionally, a 401 Authorization Required error was encountered while trying to use an ErrorDocument to handle the request.

编辑:我并不关心安全性,只是阻止人们浏览网站。

2 个答案:

答案 0 :(得分:4)

$username = 'login';
$password = 'pass';
//...
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($handle, CURLOPT_USERPWD, $username . ":" . $password);
curl_exec($handle);

答案 1 :(得分:1)

以下是如何实现此目的的示例函数。

 function curl_bounce_server( $url, $param )
{
    try
    {
        $ch = curl_init();

        $username = "your_user";
        $password = "your_pass";

        // set URL and other appropriate options
        curl_setopt( $ch, CURLOPT_URL, $url );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt( $ch, CURLOPT_POST,           1 );
        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 60 );
        curl_setopt( $ch, CURLOPT_TIMEOUT, 30 );

        curl_setopt( $ch, CURLOPT_USERPWD, "$username:$password");
        curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );

        curl_setopt( $ch, CURLOPT_POSTFIELDS, 'json='. $param ); 

        $response = curl_exec( $ch );

        curl_close($ch);

        return $response;   
    }
    catch ( Exception $exception )
    {
       return "An exception occurred when executing the server call - exception:" . $exception->getMessage();
    }
}