実現したいこと
ApacheのCGIで動くPythonで自分でステータスラインを書き出したい。厳密にはステータスコード200以外を返したい。
前提
ApacheのCGIで動いているPythonへアクセスしてくると簡単な結果(たとえばHTMLなりJSONなり)を吐き出すスクリプトを作成しています。ヘッダーや本体部分については書き出せるのですがステータスラインを含めて書き出すとエラーが発生します。ステータスコード200以外のものを書き出したい場合、どんな方法があるでしょうか?できればライブラリなし、または標準ライブラリで済ませたいです。
Python3
1#!/usr/bin/env python3 2 3print("HTTP/1.1 200 OK") 4print("content-type: plain/text") 5print("") 6print("hoge")
上記のコードが実行されると、以下のようなメッセージがApacheのログに出ます。
[cgid:error] [pid xxx] [client xxx.xxx.xxx.xxx] malformed header from script 'xxx.py': Bad header: HTTP/1.1 200 OK
3行目のステータスラインを書き出そうとしているところをコメントアウトすると勝手にステータスラインが付与されて正しく出力されます(Apachの仕業?)。これを書き出したいです。
補足情報(FW/ツールのバージョンなど)
Debian 11
Apache 2.4.56
python 3.9
回答1件
あなたの回答
tips
プレビュー