При загрузке на двух отдельных веб-сайтах виджет iframe выдает ошибку CSP

Я занимаюсь разработкой виджета iframe, который можно добавить на несколько веб-сайтов. Я обслуживаю HTML виджета с необходимыми заголовками CSP следующим образом

let widget = (req, res, next) => {
   if(!req.headers.referer){
      return res.status(404).send(); //file is meant to be loaded as iframe only
   }
   let ancestor = Url.parse(req.headers.referer);
   ancestor = ancestor.protocol+"//"+ancestor.host+(ancestor.port?":"+ancestor.port:"") + "/";
   res.set("X-Frame-Options", "ALLOW-FROM " + ancestor );
   res.set("Content-Security-Policy", "frame-ancestors "+ancestor);
   res.sendFile(__dirname + "/widget.html");
};

Когда я загружаю два разных веб-сайта, которые содержат один и тот же iframe, второй веб-сайт показывает ошибку CSP

Refused to display 'https://my.website.com/widget' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors <first_loaded_website>".

Заголовок CSP предка фрейма второго загруженного веб-сайта интерпретируется браузером как первый веб-сайт. Но я проверил вкладку сети инструментов разработчика. Правильные заголовки получены на обоих сайтах, так как

X-Frame-Options: ALLOW-FROM https://<requesting_website>/

Это действительно сбивает с толку. Что я делаю неправильно? Я проверял это на Chrome и Firefox

0 ответов

Другие вопросы по тегам