Показать сообщение отдельно
  #1 (permalink)  
Старый 21.04.2019, 10:24
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

Создание заголовка при отправке запроса (request) и разбор при получении ответа
когда используется rest-технология, тогда на сервер отправляются запросы с помощью ajax-технологии, например вот так:

/* Запрос к странице, которая требует авторизацию
* beforeSend - прежде чем отправить ajax-запрос,
* формируем специальный заголовок и только тогда отправляем
* запрос*/
function redirectUrlOld(uri, idToken){
 
    var token = sessionStorage.getItem(idToken);
 
 
    $.ajax({
        type: "POST",
        url: '/'+ uri,
        contentType: 'application/json',
        beforeSend : function(request) {
            request.setRequestHeader('Authorization', makeHeaderWithJwt(token));
        },
        success: function () {
 
        console.log("Успешно отправлен ответ!")
 
        },
        error: function (error) {
            console.log("Ошибка перенаправления!")
 
            /*нужно определиться с селктором, где будет появляется
            * сообение об ошибке*/
          //  messageErr(error,selector);
        }
    });
}


Здесь видно, что я могу установить заголовок, а на сервере "фильтры" анализируют этот заголовок.
Заголовок нужен чтобы передавать token-безопасности.

Но вопрос вот в чем.
Когда пользователь прошел аутентификацию успешно и мне через ajax, был возвращен ответ с сформированным token,
я сохраняю полученный token в sessionStorage или localStorage, и затем я передаю управление функции, которая делает
запрос на сервер, чтобы получить другую страницу, другой ресурс (в этот момент не используется rest, а в моем случае используется сервлет, который обработав запрос, отдает на сторону клиента нужный ресурс (html-страница))

Перенаправление приосходит вот так:

window.location.href = '/'+ uri


Я пробовал передать idToken в параметре

window.location.href = '/'+ uri + '?param=' +idToken;


Я на сервере его получал и при формировании response, я мог там сформировать заголовок с полученным idToken и отдать обратно.

1. Я не хотел бы отправлять в качестве параметра Get-запроса, idToken. а хотел бы сформировать на стороне клиента заголовок с токеном.

Но как это можно сделать вне вот такой функции

$.ajax({
        type: "POST",
        url: '/'+ uri,
        contentType: 'application/json',
        beforeSend : function(request) {
            request.setRequestHeader('Authorization', makeHeaderWithJwt(token));
        },
        success: function () {
.....


2. При формировании новой страницы и отправки response клиенту, я могу сформировать заголовок, но как на стороне клиента я мог бы получить данные заголовка?

3. Передача токена через глобальную переменную на стороне клиента ?
Я этого как раз то и хочу избежать.
Поэтому и думаю как это все передавать через заголовок.

4. Еще раз повторюсь :
при использовании ajax и rest-технологии вопросов с передачей токена нет.

Вопрос стоит в том, как его можно передавать в заголовке и затем разбирать на стороне клиента, если используется обычная классическая технология на сервлетах.

5. Cookies - не используются (плюсы и минусы прошу не обсуждать )

Может кто знает статью, которая доступно объяснит как формируется заголовок, когда запрашивается ресурс.
Когда формируется response , тогда заголовок формируется сервером заново или использует заголовок пришедший в request?

Я вот об этом ничего не знаю и хотел бы разобраться.
Ответить с цитированием