私はこれに慣れていないので、これが構成ファイルを適切に編集していないという問題であることを願っています。/auth という cgi-bin に保護されたディレクトリがあります。auth ディレクトリには .htaccess ファイルがあります。まず、次のようにhtpasswdファイルを作成しました...
htpasswd -c /var/pass/.htpasswd username
次に、.htaccess ファイルを作成し、auth ディレクトリに配置しました。.htaccess ファイルには次のテキストが含まれています...
AuthUserFile /var/pass/.htpasswd
AuthGroupFile /dev/null
AuthName "Protected Directory"
AuthType Basic
<Limit GET>
require valid-user
</Limit>
次のテキストを含む /cgi-bin/auth という Test.py というサンプルの Python スクリプトを配置しました...
#!/usr/bin/python
import cgi
form = cgi.FieldStorage()
print 'Content-Type: text/html\n'
if form.has_key('text'): print form['text'].value
else: print 'No text entered'
localhost/cgi-bin/auth/Test.py に移動すると、パスワード プロンプトが表示され、ログインして「テキストが入力されていません」というテキストが表示されるので、機能することがわかります。
私の問題は、POST メソッドを使用してこの保護されたファイルにデータを送信するときにパスワード プロンプトが表示されないことです。たとえば、このファイル (input.py という名前) を作成し、/cgi-bin ディレクトリに配置しました...
#!/usr/bin/python
print 'Content-Type: text/html\n'
print '<form method="post" name="form_transfer" action="/cgi-bin/auth/outputTest.py">'
print '<input type="hidden" name="text" value="transferred"/>'
print '</form>'
print '<a href="javascript:void(0)" onclick="document.form_transfer.submit(); return false">Click Me</a>'
私は localhost/cgi-bin/input.py にアクセスして Click Me リンクをクリックしましたが、単純な例 ("Test.py" スクリプト) ではパスワードを要求されません。データを受け取り、すぐに「転送されました」というテキストを表示します。これをやめさせるにはどうすればよいですか?ユーザーがログインする必要があることを望みます。
ちなみに、GET 経由で入力すると、実際にはパスワード ダイアログが生成されます (ブラウザで localhost/cgi-bin/auth/Test.py?text=printthis と入力しました)。なんらかの理由で POST が機能しません。
編集。Tyler Eaves がこれを解決しました。htaccess ファイルでは、<LIMIT GET>
入力<LIMIT GET POST>
した代わりに機能しました。