gpt4 book ai didi

java - 为什么 JDK 1.6 之后 HttpURLConnection 中的某些 header 受到限制?

转载 作者:行者123 更新时间:2023-12-02 10:28:42 25 4
gpt4 key购买 nike

需要更深入地了解此主题

我尝试在受限 header 的文档中查找特定原因,但找不到。

以下是受限 header 列表:

接受字符集接受编码访问控制请求 header 访问控制请求方法连接内容长度CookieCookie2日期DNT期望主机保持 Activity 起源推荐人TE预告片传输编码升级通过

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

要覆盖这些,需要在 JVM 启动时将 sun.net.http.allowrestrictedheaders 设置为 true 或使用System.setProperty("sun.net.http.allowRestrictedHeaders", "true")

据说它已作为安全修复的一部分被禁用。

我想了解可能会出现哪些安全风险,以及如何禁止使用 header 来解决该问题,请记住您仍然可以覆盖 header 。

引用链接:

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

Why does Content-Length HTTP header field use a value other than the one given in Java code?

Can I override the Host header where using java's HttpUrlConnection class?

最佳答案

first link在注释中说(绿色文本):

These are forbidden so the user agent remains in full control over them

这是为了防止 Web 浏览器中的恶意 javascript 代码进行欺骗。

由于 Java 代码不是 Web 浏览器,因此只有其中一些代码在 Java 中受到限制,如源代码链接所示。

仍然受到限制的 header 由 HttpURLConnection 类直接控制,并且不需要欺骗这些值,因此使它们受到限制应该不是问题。

关于java - 为什么 JDK 1.6 之后 HttpURLConnection 中的某些 header 受到限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com