Обновление Spring Boot, set-cooike заголовок не передан от ResponseEntity - PullRequest
3 голосов
/ 04 июня 2019

Я пытаюсь обновить Spring Boot с 1.3.8.RELEASE до 1.4.0.RELEASE после обновления, заголовки Set-Cookie НЕ передаются в браузер

@RequestMapping(method = RequestMethod.POST)
public HttpEntity<Result> postRequest( @RequestBody RequestObject r ){
    Result body = getBody(r);
    HttpHeader header = getHeader(); //contains Set-Cookie
    return new ResponseEntity(body,header,Httpstatus.OK)
}

Я прочитал, нашел эту альтернативуРешение, которое работает, но требует, чтобы я изменил контроллер:

@RequestMapping(method = RequestMethod.POST)
public HttpEntity<Result> postRequest( @RequestBody RequestObject r, HttpServletResponse httpResponse ){
    Result body = getBody(r);
    HttpHeader header = getHeader(); //contains Set-Cookie foo=bar
    response.addCookie(new Cookie("foo", "bar"));
    return new ResponseEntity(body,header,Httpstatus.OK)
}

Однако есть много контроллеров, и я не люблю менять каждый из них.Есть ли новая функция безопасности в новой версии Spring Boot, о которой я не знаю, поэтому я мог бы включить / выключить, чтобы старый код работал во всем проекте?

Я действительно не хочу менять500 контроллеров ...

ПРИМЕЧАНИЕ. Проходят другие заголовки, которые не Set-Cookie.

1 Ответ

0 голосов
/ 04 июня 2019

Вы можете попробовать добавить свой заголовок "set-cookie" в список открытых заголовков, который должен быть доступен браузеру.

ПРИМЕР-

HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setHeader({your header name}, {value of header}); //set your header

//add the header names you want to expose to a list 
List<String> allowedHeaders = new ArrayList<>();
allowedHeaders.add({your header name});           

//add the list of headers to be exposed to the Access-Control-Expose-Headers header
responseHeaders.put("Access-Control-Expose-Headers", allowedHeaders);  
...