Я не использую «базовую» схему авторизации HTTP, заметьте. Токен «носителя» авторизации выдается веб-службой, и последняя является стороной, которой поручена авторизация доступа к ресурсу.
Очевидно, чтобы для краткости сформулировать то, что, вероятно, очевидно и что составляет мою непосредственную проблему, похоже, не существует возможности напрямую указать какие-либо дополнительные заголовки, помимо тех, которые пользовательский агент будет предоставлять неявно, с запросами, исходящими из операторов/вызовов import, как указано выше.
Общая форма этого вопроса: для потомков можно сказать, что это две пересекающиеся гипотетические функции: во-первых, возможность указывать дополнительные заголовки для запросов импорта и, возможно, других типов запросов, для которых в настоящее время такое предоставление не поддерживается (
Код: Выделить всё
linkэлементы Чтобы перечислить некоторые решения моей непосредственной проблемы, решения, которые я до сих пор рассматривал, и все они имеют нетривиальные недостатки:
- Используйте сервис-воркера для перехвата HTTP-запросов и при необходимости добавляйте заголовок Authorization. Это должно привести к желаемому результату, но приводит к появлению всего сервисного работника, которым мне теперь придется управлять, со всем, что API потребует при его использовании (активация? передача сообщений?). Опять же, поднимаем планку поддержки функций пользовательского агента, чтобы добавить заголовок для запроса на импорт модуля (правда, вероятно, все пользовательские агенты, которые поддерживают модули, в любом случае поддерживают сервисных работников).
- Извлеките фактический ресурс модуля с помощью fetch, что позволило бы мне предоставить заголовок Authorization, среди другие для запроса затем создают URL-адрес для ответного BLOB-объекта с помощью вызова URL.createObjectURL и передают этот URL-адрес процедуре импорта (или даже оператору импорта, если он поддерживает тип URL-адреса спецификации модуля). Недостаток этого подхода, который, как я подозреваю, проявится, заключается в том, что модуль не сможет импортировать другие модули, используя относительные пути, что потенциально может потребоваться (конфигурация предназначена для разработки и поддержки), поскольку относительные пути для импорта разрешаются относительно пути модуля, содержащего их, в то время как URL-адрес здесь является одним из «блобов» со всеми вытекающими отсюда последствиями.
- Установите файл cookie, который, как я предполагаю, пользовательский агент будет включать со всеми запросы к домену (конечно, с учетом спецификации cookie).
Есть ли какой-нибудь идиоматический способ, желательно не задействующий ни одно из вышеперечисленных решений, предоставить Заголовок авторизации для импорта модуля или любые заголовки, помимо тех, которые конкретный загрузчик модуля пользовательского агента будет предоставлять неявно? А если нет, считаете ли вы какое-либо из описанных выше решений жизнеспособным на практике?
Чтобы предотвратить возникновение проблемы XY - мне неясно, что я на самом деле пытаюсь сделать (Y), и вместо этого спрашиваю, как указать заголовки для операторов/вызовов import (X): как вы, возможно, догадались, модуль может содержать некоторое количество конфиденциальной информации, поэтому он не должен быть доступен без действительной авторизации. Информация не включает пароли или ключи, но может включать личную информацию, которая может быть использована неправомерно для снятия отпечатков пальцев или профилирования службы, поэтому со стороны нашей службы безопасности является незначительным требованием желательно, чтобы модуль был доступен только через авторизацию. Модуль действует как «конфигуратор» приложения, и, поскольку он по сути является сценарием, я могу сохранять почти произвольную гибкость в отношении того, как и что модуль может настраивать.
Подробнее здесь: https://stackoverflow.com/questions/668 ... t-requests
Мобильная версия