getRequestProperty (“Авторизация”) всегда возвращает пустой указатель

Я пытаюсь прочитать заголовок авторизации для Запроса HTTP (потому что я должен добавить что-то к нему), но я всегда становлюсь пустым для значения заголовка. Другие заголовки хорошо работают.

public void testAuth() throws MalformedURLException, IOException{
    URLConnection request = new URL("http://google.com").openConnection();
    request.setRequestProperty("Authorization", "MyHeader");
    request.setRequestProperty("Stackoverflow", "anotherHeader");
    // works fine
    assertEquals("anotherHeader", request.getRequestProperty("Stackoverflow"));
    // Auth header returns null
    assertEquals("MyHeader", request.getRequestProperty("Authorization"));
}

Я делаю что-то не так? Действительно ли это - функция "безопасности"? Существует ли способ сделать эту работу с URLConnection, или я должен пользоваться другой клиентской библиотекой HTTP?

15
задан Thilo 19 May 2010 в 08:56
поделиться

3 ответа

Судя по всему, это "фишка" безопасности. URLConnection на самом деле является экземпляром sun.net.www.protocol.http.HttpURLConnection . Он определяет getRequestProperty как:

    public String getRequestProperty (String key) {
        // don't return headers containing security sensitive information
        if (key != null) {
            for (int i=0; i < EXCLUDE_HEADERS.length; i++) {
                if (key.equalsIgnoreCase(EXCLUDE_HEADERS[i])) {
                    return null;
                }
            }
        }
        return requests.findValue(key);
    }

Массив EXCLUDE_HEADERS определяется как:

   // the following http request headers should NOT have their values
   // returned for security reasons.
   private static final String[] EXCLUDE_HEADERS = {
           "Proxy-Authorization",
           "Authorization"
   };
25
ответ дан 1 December 2019 в 02:55
поделиться

Я не доволен дополнительными зависимостями, но после предложения перейти на Commons Http решило непосредственную проблему для меня.

Я все еще хотел бы знать, в чем проблема с моим исходным кодом.

0
ответ дан 1 December 2019 в 02:55
поделиться

Пробовали ли вы использовать URLConnection.addRequestProperty()? Вот как я использую для добавления заголовков HTTP-запросов.

0
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: