2011-12-01 6 views
6

Próbuję utworzyć testy usług internetowych, które implementują CORS. Muszę więc wysłać nagłówki Origin. Kiedy dzwonię pod numer addRequestProperty("origin", origin), nagłówek początku nie pojawia się na serwerze. Mówię "wydaje się" - mam aplet iterujący nad wszystkimi nagłówkami, które je drukują, a on się nie pojawia. Nie przeszedłem aż do TCPMon lub wysyłania żądania przez zwykłe połączenie z gniazdem.Czy funkcja HttpUrlConnection cenzuruje niektóre nagłówki, w szczególności pochodzenie?

Jawadok dla HttpUrlConnection nie wspomina żadnych ograniczeń, które widziałem, ale mógłbym pominąć krytyczne zdanie. Czy to znane ograniczenie?

+0

Na jakim serwerze internetowym uruchamiasz serwlet? Czy są jakieś serwery pośredniczące lub inne serwery internetowe? –

+0

Czy ustawiasz "pochodzenie" lub "pochodzenie"? – Gian

Odpowiedz

6

Znalazłem http://javasourcecode.org/html/open-source/jdk/jdk-6u23/sun/net/www/protocol/http/HttpURLConnection.java.html.

Autor, sprytnie, postanowił zabronić Origin i innych nagłówków związanych z CORS bez faktycznego wdrożenia specyfikacji CORS. To dość przygnębiające.

+1

patrząc na ten kod, można użyć właściwości systemowej 'sun.net.http.allowRestrictedHeaders', aby umożliwić ustawienie tych nagłówków. – jtahlborn

+0

Tak, ale tylko wtedy, gdy chcesz je ustawić przed pierwszym połączeniem i nigdy go nie zmieniać. Na szczęście Apache HttpClient jest rozwiązaniem. – bmargulies

+0

Podany link nie jest już ważny. Dla odniesienia, tutaj jest zaktualizowany link do [jednej z odpowiednich linii] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7u40-b43/sun/net/www /protocol/http/HttpURLConnection.java#235) w grepcode. –

Powiązane problemy