Можно ли отправлять скрытые параметры в HttpServletResponse.sendRedirect ()?

У меня есть Spring Boot API (Stateless) с контроллером, который получает запрос POST, извлекает параметры запроса POST, чтобы отправить их через GET моему угловому клиенту. У меня вопрос, можно ли отправлять скрытые параметры в HttpServletResponse.sendRedirect ()?

Пока что у меня есть это, но я не хочу показывать параметры в браузере ...

@RequestMapping(value = "/return", method = RequestMethod.POST, headers = "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
    @ResponseBody
    @Transactional
    public void returnData(UriComponentsBuilder uriComponentsBuilder, final HttpServletRequest request,
            final HttpServletResponse response) throws IOException {

        String parameter=request.getParameter("billCode");

        response.sendRedirect("http://localhost:4200/payment?parameterOne = "+parameter);
    }

Обновлять:

Я не могу использовать HttpSession session = request.getSession(false);, а затем session.setAttribute("helloWorld", "Hello world"), потому что session - это Null

Огромное спасибо!

Возможный дубликат Передайте скрытые параметры с помощью response.sendRedirect ()

Alien 04.11.2018 19:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
940
1

Ответы 1

Вы можете использовать заголовок ответа HTTP вместо отправки параметра в queryString. Пример:

@GetMapping(value = "/")
public void init(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String billCode = request.getParameter("billCode");
    response.addHeader("parameterOne", billCode);
    response.sendRedirect("http://localhost:4200/payment");
}

Чтобы получить значение из запроса:

String billCode = request.getHeader("parameterOne");

Или, если вы получаете из ajax с помощью jQuery:

$.ajax({
    url:'/api/v1/payment'
}).done(function (data, textStatus, xhr) { 
    console.info(xhr.getResponseHeader('parameterOne')); 
});

Надеюсь это поможет.

Другие вопросы по теме