Конфигурация Nginx x-frame-options не блокирует динамическую загрузку страниц Angular SPA - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь установить конфигурацию Nginx, чтобы блокировать мой сайт, встроенный в iFrame - за исключением одного URL. Моя конфигурация выглядит следующим образом:

    location / {
      expires -1;
      add_header X-Frame-Options "DENY";
      add_header Pragma "no-cache";
      add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
      try_files $uri $uri/ /index.html = 404;
    }

    location /search {
      add_header X-Frame-Options "";
      expires -1;
      add_header Pragma "no-cache";
      add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
      try_files $uri $uri/ /index.html = 404;
    }

В соответствии с конфигурацией любой трафик iFrame, который направляется на путь / search, разрешен, но трафик в любое другое местоположение заблокирован.

Проблема в том, что если iFrame изначально указывает путь / search, а затем пользователь нажимает на ссылку, чтобы перейти на другую страницу, навигация не блокируется, и пользователь может пройти.

Мне кажется, чтоэто происходит потому, что приложение представляет собой SPA на основе Angular, поэтому навигация по другому пути не выполняется с полным обновлением браузера.

Любым способом, которым я могу разрешить отображение пути / search в iFrame,и все же заблокировать весь трафик в любом месте на сайте - независимо от того, как пользователь туда попал?

1 Ответ

0 голосов
/ 04 ноября 2019

Я понял это.

При переходе на другую страницу, поскольку приложение Angular минимизируется и связывается с файлом main.js, на сервер не поступает никаких реальных запросов, и поэтому запрос делаетне добраться до Nginx. Поэтому блокировка не выполняется.

Потенциальным решением будет правильное использование отдельных модулей приложения и их объединение в отдельности.

...