2011-12-01 13 views
6

Estoy intentando crear algunas pruebas para los servicios web que implementa CORS. Entonces, necesito enviar encabezados de origen. Cuando llamo al addRequestProperty("origin", origin), el encabezado de origen no parece aparecer en el servidor. Digo 'parecer' - Tengo un servlet que itera sobre todos los encabezados imprimiéndolos, y no aparece. No he ido hasta TCPMon ni he enviado la solicitud a través de una conexión de socket simple.¿HttpUrlConnection censura algunos encabezados, principalmente Origin?

El javadoc para HttpUrlConnection no menciona ningún límite que he visto, pero podría haber omitido una oración crítica. ¿Es esta una limitación bien conocida?

+0

¿En qué servidor web está ejecutando su servlet? ¿Hay algún proxy u otro servidor web entre ellos? –

+0

¿Está configurando 'origen' u 'origen'? – Gian

Respuesta

6

Encontré http://javasourcecode.org/html/open-source/jdk/jdk-6u23/sun/net/www/protocol/http/HttpURLConnection.java.html.

El autor, hábilmente, decidió prohibir Origin y otros encabezados relacionados con CORS sin implementar realmente las especificaciones CORS. Es bastante deprimente.

+1

mirando ese código, puede usar la propiedad del sistema 'sun.net.http.allowRestrictedHeaders' para habilitar la configuración de estos encabezados. – jtahlborn

+0

Sí, pero solo si está dispuesto a configurarlo antes de obtener su primera conexión y nunca la cambie. Afortunadamente, Apache HttpClient es una solución. – bmargulies

+0

El enlace proporcionado ya no es válido. Como referencia, aquí hay un enlace actualizado a [una de las líneas relevantes] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/net/www /protocol/http/HttpURLConnection.java#235) en grepcode. –

Cuestiones relacionadas