Pull to refresh

Comments 7

Невозможно по HTTP-запросу понять, посылается ли он изнутри iframe или родительским окном, нет никаких специальных заголовком, браузер никак на это не указывает.

У вас слегка устаревшая информация. Браузеры очень даже указывают, но не все.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-Fetch-Dest

https://caniuse.com/?search=SEC-FETCH-DEST

Да, спасибо большое, что упомянули Fetch-Metadata, это важное пояснение!

Я бы не стал завязываться на него в коде приложения, все таки его роль совсем другая, но важно знать, что он есть! Поправил в тексте статьи, спасибо!

Давайте я еще вот эту статью приложу, тут, мне кажется, лучше всего разъясняется специфика: https://web.dev/fetch-metadata/

Не совсем понятен мотив использовать iframe для интеграции своего сервиса с партнерами. Не проще ли точно также добавлять партнерам ваш скрипт виджета и инициализировать виджет с указанием контейнера?

Не понял схему, а технически как должен быть устроен виджет? Что он из себя представляет?

У партнера подключаем скрипт виджета widget.js, инициализируем виджет, передавая селектор контейнера на странице партнера, ключ партнера для доступа к нашему апи:

<div id="widget_place"></div>
...
<script src="https://our.service.org/v1/widget.js" nonce="..."></script>
<script type="module">
const app = new Widget({
  apiKey:    '...',
  container: '#widget_place',
});
app.init();
</script>

На стороне своего сервиса конечно же настраиваем cors и делаем проверку ключа доступа. Таким образом мы явно ограничиваем круг партнеров, можем управлять доступом и отзывать доступ у тех, кто нарушил наши правила использования.

Тут на сколько я понял Widget - это полноценное js-приложение, которое выполняется на стороне партнёра. Это вполне возможное решение, там есть свои ограничения, но это работает во многих кейсах. Именно так встраиваются картографические сервисы, например.

Мне этот подход не подходил так как я не хотел писать отдельное приложение для партнёров, я хотел просто научить текущее встраиваться. И тут уже кроме iframe вариантов особых нет.

Не совсем понятно, а как защищать секретный ключ к апи? Который на фронте будет.

Sign up to leave a comment.

Articles