Я создаю сценарий, который вставляет iframe с моим сайтом на сайт клиента, но я хочу ограничить доступ к этой функции.
Я добавил 2 заголовка к ответам сервера
Content-Security-Policy: "frame-ancestors: example.com"
X-Frame-Options: ALLOW-FROM example.com
Работает, но X-Frame-Options
не поддерживает несколько доменов, поэтому я добавил GET-параметр в URL-адреса iframe, содержащие URL-адрес предка фрейма
А когда http://example.net
запрашивает mysite.com/embed/?from=http://example.net
, я проверяю белый список и отправляю этот домен в заголовках
Моя проблема заключается в получении реального источника страницы, который браузер использует для сравнения с заголовками.
Я попытался location.origin
и document.referrer
, но оба возвращают неправильные значения, когда я запрашиваю iframe из iframe.
Например, http://jsbin.com. Я не могу найти способ получить реальный URL в изолированном коде, это всегда http://null.jsbin.com
. Но для Content-Security-Policy
браузер использует http://jsbin.com/