簡體   English   中英

Spring Rest 模板覆蓋 Authorization 標頭值

[英]Spring Rest template overwriting Authorization header value

我正在撥打如下所示的休息電話:

REST_TEMPLATE.exchange(
        external_rest_url,
        HttpMethod.POST,
        new HttpEntity<>(dto, getHeaders()),
        Map.class)

我的標題如下:

private HttpHeaders getHeaders() {
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.set("User-Agent","Spring's RestTemplate");
    headers.set(HttpHeaders.AUTHORIZATION, "some value");
    return headers;
}

當我運行我的代碼時,頭HttpHeaders.AUTHORIZATION被替換為 undefined

從網絡日志中查看下面快照中的請求標頭: 在此處輸入圖片說明

有誰知道為什么 spring 是這樣的,或者特別是spring-web:5.0.5 jar。 我也嘗試更改 jar 的版本,但結果相同。

我使用的 Springboot 版本是2.0.x

如果需要向所有請求添加相同的標頭,則可以向 RestTemplate 添加攔截器:

public void sampleHeader(final RestTemplate restTemplate){
    //Add a ClientHttpRequestInterceptor to the RestTemplate
    restTemplate.getInterceptors().add(new ClientHttpRequestInterceptor(){
        @Override
        public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
            request.getHeaders().set(HttpHeaders.AUTHORIZATION, "some value");//Set the header for each request
            return execution.execute(request, body);
        }
    }); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM