2016-08-30 9 views
1

ドメインがmoarcatz.tkのHerokuアプリケーションがあります。 Pythonのsocketを使用して非HTTPリクエストをリスンします。
空の文字列にソケットをバインドしてIPアドレスとしてバインドすると、使用可能なすべてのインターフェイスがリッスンされます。私はさまざまなIPアドレスから空の要求を得ていたので、ソケットをmoarcatz.tkへの接続だけをリッスンするように設定すると問題が解決されると仮定します。しかし、ソケットをドメイン名にバインドする方法はわかりません。
は私が'moarcatz.tk 'とgethostbyname('moarcatz.tk')を試してみましたが、両方は私に、このエラーを与える:Pythonソケットを特定のドメインにバインドする方法は?

OSError: [Errno 99] Cannot assign requested address 

ものとまでは何?

+0

リスニングソケットをDNSホスト名にバインドすることはできず、IPアドレスまたはインターフェイスにのみバインドすることはできません。 –

+0

@KlausD。では、どうすれば 'moarcatz.tk'へのリクエストしか得られないのでしょうか? – Leva7

+0

厳密に言うと、あなたはできません。 HTTPなどのアプリケーションレベルのプロトコルでは、IPアドレス(ホストヘッダーなど)を取得するために使用されたドメイン名に関する情報を得ることができますが、これは正しいことが保証されていないため、偽装することができます。ソケット/トランスポートレベルでは、その情報は送信されません。 – bimsapi

答えて

0

コードでこれを制御することはできませんが、これはHerokuで制御できます。

Herokuは、貴重なDNS CNAMEツールを使用して、あなたのアプリが特定のドメインの受信リクエストのみを聴くことができるようにします。これは、Herokuプラットフォームのコアの一部です。

何をすることはこれです:

heroku domains:add www.moarcatz.tk 

その後、moarcatz.tkのためにあなたのDNSプロバイダに移動し、ためにCNAMEレコードを追加します。

    :これは二つのことを行います

    www <heroku-app-name>.herokuapp.com 
    

  • あなたのDNSをHerokuに向ける。
  • Herokuが受信トラフィックをフィルタリングし、その特定のドメインに対してそれを許可するようにします。
関連する問題