когда используется 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?
Я вот об этом ничего не знаю и хотел бы разобраться.