Как мога и има ли смисъл да използвам Service Worker, за да добавя заглавка за оторизация към всичките си заявки за API?

Всяка заявка, която правя към вътрешен API, изисква заглавка за оторизация. Създавам приложение, базирано на Polymer, използвайки много уеб компоненти, както частни, така и на трети страни. Извършвам почти всички мои AJAX извиквания чрез <iron-ajax> елементи. Знам, че мога да създам персонализиран компонент, за да постигна централизацията, която търся, но се чудех дали използването на сервизен работник за прихващане на заявки към моя API и добавяне на необходимите заглавки и всяка друга манипулация или валидиране, което може да искам, би било жизнеспособни, ефективни или дори възможни. Особено защото Polymer 1.0 все още не поддържа разширяване на други компоненти.


person bearfriend    schedule 19.07.2015    source източник
comment
Знам, че мога да създам персонализиран компонент --- Мисля, че това е точно отговорът на въпроса ви и перфектен случай за използване за създаване на персонализиран компонент, който обгръща вашите <iron-ajax> повиквания. Това е компонент, който използва 1. статични специални заглавки 2. Извършва проверка 3. Може да се конфигурира външно. Всичко това ми крещи dom-module и мисля, че работник в услугата, който прихваща това и т.н., е много повече работа, отколкото трябва. Има елемент за това!   -  person mbunit    schedule 20.07.2015


Отговори (1)


Мислете за скрипта на service worker като на (java-)скриптируем прокси — със сигурност бихте могли да правите всякакви манипулации (включително добавяне, премахване и манипулиране на HTTP Headers) към вашите повиквания, стига service worker да контролира произхода. И докато вашите API извиквания не са с един и същи произход. Cross-Origin и други непрозрачни неща за заявка стават по-трудни, но не мисля, че това се отнася за вашия случай на употреба, съдейки по начина, по който го описахте досега.

Единственият проблем с този подход е, че вие ​​основно ограничавате обхвата на приложението си до един браузър: Google Chrome (версия 40+). Ако това е добре за вас, не се колебайте да продължите с това, но тъй като Firefox все още няма да поддържа прихващане на заявки (събитието fetch), (въпреки че в този момент обслужващите работници изглежда най-накрая кацат във Firefox 43) и не можете да изпълнявате полифилни обслужващи работници — ще трябва да предоставите някакъв резервен механизъм в JS кода на вашата страница, ако искате да поддържате < em>всеки браузър, различен от Chrome 40+ поне за няколко месеца напред.

person Flaki    schedule 19.07.2015
comment
За да подсилим това: обслужващият работник е предназначен да бъде прогресивно подобрение и проектирането на страница, която ще работи само ако е регистриран обслужващ работник, почти сигурно е грешка. Дори за потребители на Chrome софтуерът (обикновено) няма да бъде активен първия път, когато потребител посети сайта, или ако потребителят презареди една от вашите страници със смяна. - person Jeff Posnick; 20.07.2015
comment
Благодаря и на двама ви. Това добавя известна яснота към предназначението им. Не мисля, че има смисъл да ги използвам. Разбрах, че мога лесно да открадна метода xhr.open, за да настроя слушатели и да правя всичко, от което имам нужда там, и за момента избрах да направя това с поведение на полимер. - person bearfriend; 21.07.2015