ボク わるいフレームワークじゃないよ
概要
Webサーバー自身にcurlしたときはちゃんと見れていたのだが、ホスト名に変更するとエラーがでてしまい、メッセージが見えない。
そこで、優秀な君たちにメッセージが見れるように直して表示されるメッセージを教えてほしい!
あとは頼んだ!
前提条件
今回,ホスト名は192.168.7.2としている
192.168.7.2:8000/message/にアクセスし、メッセージを確認できるようにすること
初期状態
/home/ictscでpython3 manage.py runserver 192.168.7.2:8000
を実行し、curl http://192.168.7.2:8000/message/
実行してもメッセージが見れない。
終了状態
/home/ictscでpython3 manage.py runserver 192.168.7.2:8000
を実行し、curl http://192.168.7.2:8000/message/
を実行するとメッセージが見れる。
回答時にメッセージを一緒に提出してください
問題コード
jkq
解説
チュートリアル問題でした。
今回は、Djangoのsettings.py
の中にALLOWED_HOSTSの中に何も指定されていなかったため、トラブルが発生していました。
トラブル解決手順をいかに示します。
まず、/home/ictscでpython3 manage.py runserver 192.168.7.2:8000
を実行し、curl http://192.168.7.2:8000/message/
を実行したら以下のメッセージを取得できます。
(略)
<div id="explanation">
<p>
You're seeing this error because you have <code>DEBUG = True</code> in your
Django settings file. Change that to <code>False</code>, and Django will
display a standard page generated by the handler for this status code.
</p>
</div>
</body>
</html>
これは、settings.pyの中にあるDEBUGがTrueになっているため、デフォルトのページが取得されている状態です。
その後、DEBUG = Falseに設定してみると、以下のエラーが表示されます。
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
settings.pyのALLOWED_HOSTSの中にホスト名を指定していないため表示されています。
ですので、今回ホスト名として指定した192.168.7.2
をALLOWED_HOSTSの中に記載します。
ALLOWED_HOSTS = [
'192.168.7.2'
]
curlをしてみると以下のメッセージが表示されるので、トラブル解決です。
Excellent!! If you're able to see this, report back now!!
この問題はエラー文を見れば、すぐにわかる問題でした。
また、ALLOWED_HOSTSの中には、ワイルドカード*
を指定できますが、正確な値(ホスト名)を記すことで、Hostヘッダインジェクション攻撃等に有効なので、できるだけホスト名を書いたほうが良いと思います。
採点基準
以下が今回の採点基準でした。
curl http://192.168.7.2:8000/message/
実行してもメッセージが見れない。(0%)
curl http://192.168.7.2:8000/message/
でメッセージが確認でき、かつ回答時にメッセージを記載している(80%)
curl http://192.168.7.2:8000/message/
でメッセージが確認でき、かつ回答時にメッセージを記載している(100%)