I see some sites have blocked there port 80 (or 443) to be accessed by IP.
La mia ipotesi è che intendi che l'accesso a http://hostname
funzioni mentre http://ip-adress/
non funziona. A livello TCP, l'host è ancora accessibile dall'indirizzo IP, ma la richiesta HTTP sembra diversa perché il nome fornito nell'URL è contenuto nella richiesta HTTP, ad es.
GET /some-page HTTP/1.1
Host: hostname
Il motivo principale per cui il nome host all'interno della richiesta HTTP è che spesso si hanno più server virtuali con nomi host diversi sullo stesso indirizzo IP. Questi hanno diverse configurazioni e il server deve essere in grado di distinguere quale configurazione deve essere utilizzata. Se si fornisce un nome host che non ha alcuna configurazione speciale, viene utilizzata una configurazione predefinita e spesso questa mostra solo una pagina di errore (che altro dovrebbe fare?).
E questo è esattamente ciò che accade quando si assegna un indirizzo IP al posto del nome host. Poiché non esiste una configurazione speciale per Host: IP address
, verrà utilizzata la configurazione predefinita che mostra l'errore.
A parte questo, ha senso controllare correttamente il nome host anche se il loro è solo un singolo sito su questo indirizzo IP, perché accettare un nome host arbitrario può portare a DNS rebinding e attacchi simili.