/
カテゴリー

概要

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%)