7

Plack スイートは一般的にhttp://0:port. たとえば、次の

plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root=>".");'

版画

HTTP::Server::PSGI: Accepting connections at http://0:5000/

ただし、LWP::UserAgent(またはより深く呼び出されたモジュール)はそれを受け入れませんでした。

perl -MLWP::UserAgent -E '$u=LWP::UserAgent->new;$res=$u->get("http://0:5000/valid/path");print $res->status_line'

プリント:

500 No Host option provided

しかし

perl -MLWP::UserAgent -E '$u=LWP::UserAgent->new;$res=$u->get("http://localhost:5000/valid/path");print $res->status_line'

版画

200 OK

問題は、誰が間違っているかです。

  • 有効か、たとえば LWPがhttp://0:port「間違っている」か
  • それとも有効ではなく、PSGI はそれを「ランダムに有効な」ショートカットとしてのみ使用しますか?
4

2 に答える 2

6

Plack スイートの出力は、サーバーの出力です。サーバーは通常、特定bindポートとアドレスにソケットを送信して、そこでコンテンツを提供します。http://0:portこの場合の表記は、このマシンのすべてのアドレスのポートリッスンportすることを意味します。これは、サーバーが到達可能であるべきマシンのすべてのアドレスがわからない場合、または指定したくない場合に便利です。

LWP::UserAgent の出力は、クライアントの出力です。サーバーへの接続を開くには、接続先のアドレスポートを明示的に指定する必要があります。は有効な IP アドレスではないため、 に接続すると接続に失敗ます。0http://0:port

于 2015-07-06T10:21:35.113 に答える