web-dev-qa-db-ja.com

Djangoが "DisallowedHost at /"をスローするのはなぜですか?

私は自分のDjangoこれを使用してサーバーをセットアップしています Digital Ocean tutorial 。各ステップに従ってDjangoフレームワークを作成し、実行しましたこのコマンドを使用するサーバー:

./manage.py runserver 0.0.0.0:8000

ポート8000​​でIPにアクセスしようとすると、次のエラーが表示されました。

DisallowedHost at /
Invalid HTTP_Host header: 'XXX.XXX.XXX.XXX:8000'. You may need to add u'XXX.XXX.XXX.XXX' to ALLOWED_HOSTS.

(Xで置換されたIP)

なんでこんなことが起こっているの?

46
alukin

settings.pyには、ALLOWED_HOSTSというリストがあります。エラーに表示されるIPアドレスをそのリストに追加する必要があります。

ALLOWED_HOSTS = ['XX.XX.XX.XX']

ポートを追加しないでください。

説明:

Djangoは、HTTPリクエストのHostヘッダーで、許可されたホスト内にあるURL/IPアドレスをチェックします。

Djangoウェブサイトから:

これは、HTTPホストヘッダー攻撃を防ぐためのセキュリティ対策です。これは、安全に見える多くのWebサーバー構成でも可能です。

https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts

74
randyr

この設定をsettings.pyに含めることができます

ALLOWED_HOSTS = ['*']

重要

アプリを本番環境にデプロイするときにこの構成を変更します

2
kapoc

実行の場合Django "ngrok"による無料ホスティングを使用したローカルホスト上のプロジェクト

run ngrok http 8000

(これをプロジェクトで実行する前に、プロジェクトがlocalhostで実行する必要があることを確認してくださいpython manage.py runserver)

http://563ae936.ngrok.io -> http:// localhost:80

Setting.pyを編集

ALLOWED_HOSTS = ['563ae936.ngrok.io'、 'localhost'、 '127.0.0.1'、 'testserver']

ここで「563ae936.ngrok.io」を削除してホスト名を置き換えますhttp://またはhttps://

0

両方を含める(「www.name.com」、「ip.ip.ip.ip」)Debug = Trueに設定してから、IPとURLアドレスを再試行します。

トレースバックセクションに移動して、メッセージを見つけます[DisallowedHost(msg)を発生]クリック->▼ローカル変数

受信ドメイン名と許可されたホストの設定が表示されます。

*Variable       Value
*allowed_hosts  ['ip.ip.ip.ip', 'name.com']
*domain          'something.com'
*

入力値をsettings.pyにコピーします。古い設定が表示される場合は、サーバーを再起動してください\ nginx

0
chad