У нас есть mp3-плеер, который работает через iFrame, не наш выбор, но именно поэтому мы с ним застряли. Мы хотим, чтобы другие люди просто не встраивали iframe на свои сайты.
Как лучше всего это сделать? Мы запускаем nginx, поэтому нет .htaccess. MP3-плеер состоит из файлов php, и нам нужно продолжать его работу в iframe.
Есть ли способ заблокировать определенный php файл mp3-плеера (в данном случае html5player.php), чтобы его можно было запускать только на нашем сервере или доменном имени? Конечно, есть способ сделать это в nginx? Но, конечно, если они встраивают iFrame, он все равно будет думать, что он работает на нашем сервере, не так ли?
Все решения, которые я придумал, упали где-то по пути, поэтому очень ценю вклад.
Я не эксперт по NGINX, но теоретически это может работать:
location ~* \urltoyourplayer?$ { valid_referers none blocked yourdomain.fqdn; if ($invalid_referer) { return 403; } }
Это должно предотвратить встраивание вашего плеера на другие веб-сайты путем чтения URL-адреса реферера, если он соответствует вашему домену, тогда ОК, в противном случае вернуть ошибку 403.
Похоже на работу для X-Frame-Опции заголовок:
add_header X-Frame-Options SAMEORIGIN;
(Очевидно, применимо к местоположению, соответствующему рассматриваемому файлу)
Вы также можете добавить заголовок в PHP, что может быть проще.
Обязательно добавьте заголовок именно один раз, или он будет проигнорирован некоторые браузеры, вызывая массу "веселья" при отладке. Видеть отчет об ошибке для Chrome, отчет об ошибке для Firefox.