2015-07-06 22 views
7

Plack paketi, genellikle http://0:port kullanır. Örneğin. Aşağıdakihttp: // 0: portu hakkında kim yanlış?

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

baskılar Ancak

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

, LWP::UserAgent (veya bazı derin adlandırılan modüller) vermedi kabul o ör :

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

baskılar:

500 No Host option provided 

ama

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

baskılar

200 OK 

soru şudur: kim yanlış?

  • http://0:port, örn. LWP "yanlış"
  • veya geçerli değil ve PSGI sadece "rasgele geçerli" kısayol olarak kullanıyor?
+1

Localhost '0' adresi değil, (genellikle)' 127.0.0.1'. Asıl adresi görmek için 'localhost''a ping yapmayı deneyin. –

+1

Bu, ilgili: http://lists.scsys.co.uk/pipermail/catalyst/2012-April/028434.html – simbabque

+1

@JoachimPileborg tamam, soru başlığını düzenledi. :) Sorunun erdemleri kalmıştır: url 'http: // 0: 5000' geçerli mi, yoksa yok mu? Kullanılabilir mi, yoksa yapılmalı mı? – kobame

cevap

6

Plack paketinin çıktısı, sunucusunun sunucusunun çıkışıdır. Bir sunucu, oradaki içeriğe hizmet etmek için tipik olarak binds belirli bir bağlantı noktasına ve adrese bir sokettir. Bu durumda notasyonu http://0:port araçlar: Bu makinenin ait üzerinde port port üzerinde listen tüm adresleri. Bu, sunucunun ulaşılabilir olması gereken makinenin tüm adreslerini bilmemek ya da bilmek istemiyorsanız kullanışlıdır.

LWP :: UserAgent'ın çıkışı, istemcisinin istemcisinin çıktısını gerektirir. Bir sunucuya bağlantı açmak için, numaralı bağlantıyı ve adreslerine bağlanacak bağlantı noktasını açıkça belirtmeniz gerekir. 0 geçerli bir IP adresi değil, bu nedenle connect - http://0:port için bağlantı başarısız oluyor.

+0

'http: // 0: port' bir * URL *. Yani, http: // 0: 5000' geçerli bir URL değil ve "yalnızca" _handy_. Sağ? – kobame

+0

geçerli bir URL değil. Bu sadece Plack kodunun bir yerinde bir "printf" sonucudur.Bir sunucu bir URL'ye değil, IP adresi ve bağlantı noktası kombinasyonuna bağlanmaz. – eckes

+1

tamam, bağlantıyı anlayın - ancak PSGI bir * URL * yazdıracaktır, örn. 'http: // 0: 5000'. tamam - şimdi bilin - geçersiz bir URL yazdırıyor, ancak birçok durumda kullanışlı - birçok tarayıcı sadece '127.0.0.1' anlamına geliyor. Teşekkürler. :) – kobame

0

Safari 11, curl ve wget, http://0.0.0.0:5000 için http://0:5000 çözümünü ve localhost'a bağlanın.

Sadece URL'yi gördükten ve sorunun cevabını bulmaktan sonra test ettim.