在Java 11中HttpClient如何解决受限制的头名:Date

use*_*821 7 java http java-http-client java-11

以下java 11代码:

HttpRequest request = HttpRequest.newBuilder()
            .uri(uri)
            .header("Digest", digest)
            .header("Date", date)  
            .build();
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: restricted header name: "Date"
Run Code Online (Sandbox Code Playgroud)

问题是摘要是基于日期的,所以我不能简单地依赖于http客户端日期,因为这会使摘要无效.我需要一种方法来设置Date标头,或者检索Date标头,然后设置摘要.标准java 11似乎都不可能.

Nam*_*man 6

Bug#JDK-8213189

这是在当前JDK的http-client实现中注册的错误,其中Date 也将其归类为受限制的标头.

在JDK/12中,将允许使用该属性允许其他此类受限标头:

-jdk.httpclient.allowRestrictedHeaders
Run Code Online (Sandbox Code Playgroud)

  • 据此,它在版本 12 中得到了修复。哦,好吧,因为我已经跳过了版本 9 和 10,所以我不妨跳过 11! (2认同)