Есть ли способ указать дополнительные заголовки [HTTP] для запросов на импорт модуля ES6?Html

Программисты Html
Ответить
Anonymous
 Есть ли способ указать дополнительные заголовки [HTTP] для запросов на импорт модуля ES6?

Сообщение Anonymous »

Я реализую вариант использования, в котором по соображениям безопасности веб-сервер, обслуживающий ресурсы моего приложения, будет отправлять содержимое только одного конкретного модуля [ES6] только авторизованным пользователям/клиентам, используя заголовок Authorization, предоставленный с запросом. Другими словами, любой HTTP-запрос к телу модуля, исходящий от некоторого оператора import "./module-with-sensic-data.js" (или вызова import), должен эффективно завершиться только тогда и только тогда, когда сервер успешно авторизует запрос с помощью предоставленного заголовка Authorization.
Я не использую «базовую» схему авторизации HTTP, заметьте. Токен «носителя» авторизации выдается веб-службой, и последняя является стороной, которой поручена авторизация доступа к ресурсу.
Очевидно, чтобы для краткости сформулировать то, что, вероятно, очевидно и что составляет мою непосредственную проблему, похоже, не существует возможности напрямую указать какие-либо дополнительные заголовки, помимо тех, которые пользовательский агент будет предоставлять неявно, с запросами, исходящими из операторов/вызовов import, как указано выше.
Общая форма этого вопроса: для потомков можно сказать, что это две пересекающиеся гипотетические функции: во-первых, возможность указывать дополнительные заголовки для запросов импорта и, возможно, других типов запросов, для которых в настоящее время такое предоставление не поддерживается (

Код: Выделить всё

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

Подробнее здесь: https://stackoverflow.com/questions/668 ... t-requests
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»