2010-07-29 12 views
40

Dire faccio una richiesta HTTP: foosite.com ma la porta ho effettivamente inviare la richiesta al 6103 è e non metto quella porta nell'intestazione Host ad esempio:Il numero di porta richiesto nel parametro di intestazione "host" HTTP?

GET /barpage HTTP/1.1 
Host: foosite.com 
Method: GET 

caso http server di allora riconoscere che Sto cercando di parlarci sulla porta 6103? O dal momento che è stato omesso nell'intestazione della richiesta sto giocando d'azzardo se il server effettivamente lo riconosce?

chiedo a questa domanda per dire questo: ho trovato che i browser, almeno firefox + chrome, mettere l'int porto ha Host intestazione. Ma l'app Java che sto usando non lo fa. E quando la porta non viene passata nello Host, il server risponde pensando di essere sulla porta 80. Allora, chi devo essere al tasso? L'operatore del server o il programmatore Java?

+4

6103 è una porta strana per HTTP – NullUserException

+0

Sono d'accordo con @NullUserException. L'impostazione predefinita per HTTP porta 80, quindi mi piacerebbe ottenere con il tuo sviluppatore Java per garantire che includono la porta non standard nelle loro chiamate. – kbrimington

+0

È fondamentalmente un servizio API per le inserzioni immobiliari. Specificamente RETS http://www.rets.org/documentation. Le società che forniscono RETS per servizi di quotazione multipli tendono a fornire loro sottodomini o porte dal loro dominio principale in modo simile a socalmls.someretscompany.com o someretscompany.com:6111. Non chiedere il mio perché usano le porte. Lavoro solo qui;) –

risposta

46

Vedi section 14.23 of the HTTP spec che specifica che la porta # dovrebbe essere inclusa se non la porta predefinita 80.

+2

Sì, l'ho letto anche nella RFC. Probabilmente avrei dovuto saperlo. Speravo che qualcuno dicesse qualcosa di utile nel senso di sapere in particolare come alcuni web server e framework di app web reagiscono a questo tipo di richieste come: "Alcuni framework web server/app lo gestiscono, ma X e Y no" ecc. ecc. Alla fine mi aspettavo di accettare solo ciò che la RFC aveva da dire, ma ho intenzione di dare questa domanda forse un giorno prima di arrendermi. –

+4

@superfell vuoi dire DEVE e non DOVREBBE giusto? – Pacerier

+0

Grazie, ora so che questo è un [bug in IE11 mobile] (https://answers.microsoft.com/en-us/winphone/forum/-/-/23abc83b-c28f-4838-ac82-5b043e48d8e2)! – Eric

4

browser (e ricciolo) aggiungerà la porta solo quando non è la porta standard, come richiesto dal HTTP spec e indicato in @ superfell's answer.

I browser questo giorno (2013), saranno in realtà striscia la porta dall'intestazione host quando la porta è lo standard (porta http 80, porta https 443). Alcuni client, che usano il proprio metodo, come il Baidu Spider, include the port number even when the port is 80.

Se questo è corretto o meno, non lo so. La specifica non dice se è OK o meno includere il numero di porta quando la porta utilizzata è quella predefinita.

Per rispondere al tuo comment, i server faranno tutto il necessario per conformarsi alle specifiche e le specifiche suggeriscono solo i casi QUANDO è necessario. Per questo motivo, mi sento Non è davvero una questione di come il server si occupa di esso - è più come il client emette la richiesta: include il numero di porta nell'intestazione dell'host, o no.

+0

la specifica dice chiaramente che va bene includere il numero di porta (l'autorità di denominazione include la porta), cioè il numero di porta è * obbligatorio *, a meno che non sia l'impostazione predefinita per il servizio. –

Problemi correlati