Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Java 11 HttpClient how to solve restricted header name: Date

The following java 11 code:

HttpRequest request = HttpRequest.newBuilder()
            .uri(uri)
            .header("Digest", digest)
            .header("Date", date)  
            .build();

gives the following error:

Exception in thread "main" java.lang.IllegalArgumentException: restricted header name: "Date"

The problem is that the digest is based on the date, so I cannot simply rely on the http client date, because that will make the digest invalid. I need a way to either set the Date header, or to retrieve the Date header and then set the digest thereafter. Neither seems possible with standard java 11.

like image 208
user1120821 Avatar asked Dec 30 '18 16:12

user1120821


1 Answers

Bug#JDK-8213189

This is a bug registered in current JDK's http-client implementation where Date is categorized as a restricted header as well.

In JDK/12, there would be a provision for other such restricted headers to be allowed using the attribute:

-jdk.httpclient.allowRestrictedHeaders
like image 112
Naman Avatar answered Nov 15 '22 21:11

Naman