http://0:port 谁错了?
Who is wrong about the http://0:port?
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
问题是:谁错了?
-
http://0:port
是否有效,例如LWP 是 "wrong"
- 或者它无效并且 PSGI 仅将其用作 "randomly valid" 快捷方式?
Plack 套件的输出是服务器 的输出。服务器通常 bind
s 到某个端口和地址的套接字,以便在那里提供内容。
在这种情况下,符号 http://0:port
表示: listen on port port
on all addresses of this machine .如果您不知道或不想指定应该可以访问服务器的计算机的所有地址,这将很方便。
LWP::UserAgent 的输出是 客户端 的输出。为了打开与服务器的连接,您必须明确指定地址和要连接的端口。 0
不是有效的 IP 地址,因此当您 connect 到 http://0:port
时连接失败。
Safari 11、curl 和 wget 将 http://0:5000
解析为 http://0.0.0.0:5000
并连接到本地主机。
刚刚测试了一下,看到URL发现问题的答案不满意
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
问题是:谁错了?
-
http://0:port
是否有效,例如LWP 是 "wrong" - 或者它无效并且 PSGI 仅将其用作 "randomly valid" 快捷方式?
Plack 套件的输出是服务器 的输出。服务器通常 bind
s 到某个端口和地址的套接字,以便在那里提供内容。
在这种情况下,符号 http://0:port
表示: listen on port port
on all addresses of this machine .如果您不知道或不想指定应该可以访问服务器的计算机的所有地址,这将很方便。
LWP::UserAgent 的输出是 客户端 的输出。为了打开与服务器的连接,您必须明确指定地址和要连接的端口。 0
不是有效的 IP 地址,因此当您 connect 到 http://0:port
时连接失败。
Safari 11、curl 和 wget 将 http://0:5000
解析为 http://0.0.0.0:5000
并连接到本地主机。
刚刚测试了一下,看到URL发现问题的答案不满意