Почему некоторые заголовки ограничены в HttpURLConnection после JDK 1.6? - PullRequest
0 голосов
/ 11 декабря 2018

Нужно более глубокое понимание по этой теме .

Я пытался найти конкретные причины в документации для ограниченных заголовков, но не смог найти.

Здесьсписок ограниченных заголовков:

Accept-Charset Accept-Encoding Access-Control-Request-Headers Access-Control-Request-Method Connection Content-Length Cookie Cookie2 Date DNT Expect Host Keep-Alive Origin Referer TE Trailer Transfer-Encoding Upgrade Via

см. : http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/31bc1a681b51/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java#l186

Чтобы изменить этонеобходимо установить sun.net.http.allowrestrictedheaders в true при запуске JVM или использовать System.setProperty ("sun.net.http.allowRestrictedHeaders", "true")

Говорят, что оно было отключено как часть исправления безопасности.

Я хочу понять, какой риск безопасности мог возникнуть и как он создавался.Заголовки, запрещенные к использованию, были решением этой проблемы, имея в виду, что вы все еще можете переопределить заголовки.

ссылки для ссылки:

https://fetch.spec.whatwg.org/#forbidden-header-name

ВтПочему в поле заголовка HTTP Content-Length используется значение, отличное от значения, указанного в коде Java?

Могу ли я переопределить заголовок Host там, где используется класс HttpUrlConnection java?

1 Ответ

0 голосов
/ 11 декабря 2018

Первая ссылка говорит в примечании (зеленый текст):

Они запрещены, поэтому пользовательский агент остается под полным контролем над ними

Это предотвращает подделку вредоносным JavaScript-кодом в веб-браузерах.

Поскольку код Java не является веб-браузером, только некоторые из них ограничены в Java, так как ссылка наИсходный код показывает.

Заголовки, которые все еще ограничены, контролируются непосредственно классом HttpURLConnection, и не должно быть необходимости подделывать значения, поэтому ограничение их не должно быть проблемой.

...