X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> авторизационный токен
Degradator
Degradator
Topic Starter сообщение 27.4.2015, 14:27; Ответить: Degradator
Сообщение #1


Добрый день, интересует решение проблемы с авторизационным токеном. Толком не понимаю почему, но говорят что использовать куки не комильфо, и надо передавать в заголовках токен, который сохраняется в js, и оттуда идет на сервер вместе с заголовком через аякс. Проект single-page application, почти все работает через ajax. Кроме некоторых вещей, которые в силу каких-то причин надо открывать в новом окошке через window.open() или через <a href="#" target="_blank". Так вот, передать токен в заголовке не получается, и на выходе мы имеем модную страницу 401 authorization required. Как лучше выходить из такого положения? Можно, например, слать аяксовый запрос на сервер, и зафигачивать в window.open уже полученный контент, но тут такие две беды - приложение стоит на ext js и из ответа приходят разные json объекты, и подключается миллион всяких маленьких скриптов, который отвечают за отрисовку, и я понятия не имею, как это все отразится на новой странице. И вторая беда - в некоторый случая с сервера приходит PDF. Тут вобще приходят биты и байты в неудобоваримом формате, и я не знаю как сказать window.open() что это контент-тайп = PDF.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 27.4.2015, 23:22; Ответить: Arks
Сообщение #2


проблема с авторизационным токеном только у Вас в голове:
1. Куки передаются ровно также в заголовках.
2. Разницы для Вас как для разработчика где сохраняется токен - в памяти или в куках - нет и быть не должно. Об этом должны заботиться разработчики браузера. Исключение составляют девайсы которые не умеют работать с куками(антикварные SmartTV например или какие-нить Unity-поделки, разумеется работу с хидерами тоже) - там вообще единственный вариант фигачить все в QueryString при каждом запросе. Ничего плохого в этом нет, не делают так только потому что такие url-ы нельзя скопировать и "передать другу". Впрочем на антикварных SmartTV такой возможности и нет поэтому это является допустимым. Т.е. да, тут мы, фактически, думаем за пользователя. В случае со ссылками и window.open - от того что вы положите не в куку а в LocalStorage и SPA в окошке сделает аякс-запрос с хидерами вместо куки при отправке GET-запроса - ничего разительно не изменится. Все те же заголовки, повторюсь.

Касательно PDF - очевидно есть 2 варианта - сохранение файла(для этого ответ сервера сопровождается соотв.заголовками и никакой extJS тут ни при чем), и второй - ответ сервера должен обрабатываться клиентом(браузером) - например на js как plainText или blob. Мне лично средства рендеринга pdf на js неизвестны. Вам судя по всему - тоже.
В этом случае вы должны открыть окно с url-который в ответе сервера отдаст PDF, а не получить PDF как blob и как-то его куда-то передавать в соседнее окно(как Вы себе это представляете вообще?). Можно посмотреть только в сторону postMessage, но опять же при наличии средств рендеринга контента на клиенте. Например так можно поступить с blob картинки - для которой есть canvas. А вот pdf-редерилки в API html5 не встроены - потому что это проприетарщина.
Так что рекомендую передохнуть и посмотреть на проблему с точки зрения здравого смысла и стандартов, а не с точки зрения какой-то ограниченной реализации(вижу вы зациклились в вопросе на ExtJS и js-файликах. Нет - они не умеют рендерить pdf)
windowOpen - это get-запрос через адресную строку браузера. В таком get-запросе, в отличие от ajax - вы не управляете заголовками.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
Topic Starter сообщение 28.4.2015, 11:01; Ответить: Degradator
Сообщение #3


Куки передаются ровно также в заголовках.

Я понимаю, что от использования токена, куки никуда не деваются. Просто они становятся ненужными.
Касательно PDF - очевидно есть 2 варианта - сохранение файла

Вчера именно так и заткнул, но это не подходящий вариант (хотя, по моему мнению, он вполне нормальный, но заказчик хочет получить real-time pdf отчеты).
не получить PDF как blob и как-то его куда-то передавать в соседнее окно(как Вы себе это представляете вообще?)

Пробовал вчера это сделать, собственно, как и следовало ожидать, ничего не вышло. Думал что можно у документа поменять content-type и он сразу начнет все отображать.
Есть вариант написать какую-то страницу, на которой будет реализация ajax функции, и которая будет принимать url страницы, которую надо открыть. Вроде как есть удобные либы для этого дела, типа superagent.

Ну и собственно, читаю разные велосипеды с реализациями на токенах, их везде пихают в хидеры, и везде одни и те же проблемы (на рельсах, например).

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


 



RSS Текстовая версия Сейчас: 25.4.2024, 4:07
Дизайн