Самое важное приложение для интеграции iframe Django - PullRequest
0 голосов
/ 28 августа 2018

У меня Apache 2.4 и материя 5.2 Оба они находятся на одном сервере. Я настроил виртуальный хост для указания на самый важный порт 8065. Ниже приведен мой файл конфигурации.

<VirtualHost *:80>
  ServerName subdomain.domain.in
  #ServerAdmin hostmaster@mydomain.com
  ProxyPreserveHost On

  # Set web sockets
  RewriteEngine On
  RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC,OR]
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
  RewriteRule .* wss://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f

  <LocationMatch "^/api/v(?<apiversion>[0-9]+)/(?<apiusers>users/)?websocket">
    Require all granted
    ProxyPass ws://127.0.0.1:8065/api/v%{env:MATCH_APIVERSION}/%{env:MATCH_APIUSERS}websocket
    ProxyPassReverse ws://127.0.0.1:8065/api/v%{env:MATCH_APIVERSION}/%{env:MATCH_APIUSERS}websocket
    ProxyPassReverseCookieDomain 127.0.0.1 subdomain.domain.in
  </LocationMatch>

  <Location />
    Require all granted
    ProxyPass http://127.0.0.1:8065/
    ProxyPassReverse http://127.0.0.1:8065/
    ProxyPassReverseCookieDomain 127.0.0.1 subdomain.domain.in
  </Location>

</VirtualHost>

Я пытаюсь загрузить iframe следующим образом из anothersubdomain.domain.in/mattermost в приложении Django

<iframe src="http://subdomain.domain.in"></iframe>

Я получаю

Refused to display 'http://subdomain.domain.in/' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self'"

Я не хочу менять самый важный код. Есть ли способ завершить это?

1 Ответ

0 голосов
/ 18 сентября 2018

Проведя несколько дней с этой проблемой, я пришел к решению отредактировать заголовки запроса Content-Security-Policy и X-Frame-Options . Ниже мой отредактированный виртуальный хост.

<VirtualHost *:80>
  ServerName subdomain.domain.in
  #ServerAdmin hostmaster@mydomain.com
  ProxyPreserveHost On

  # Set web sockets
  RewriteEngine On
  RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC,OR]
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
  RewriteRule .* wss://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L]
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f

  Header edit Content-Security-Policy: "frame-ancestors 'self'" "frame-ancestors http://*.domain.in"
  Header edit X-Frame-Options "SAMEORIGIN" "allow-from http://*.domain.in"

  <LocationMatch "^/api/v(?<apiversion>[0-9]+)/(?<apiusers>users/)?websocket">
    Require all granted
    ProxyPass ws://127.0.0.1:8065/api/v%{env:MATCH_APIVERSION}/%{env:MATCH_APIUSERS}websocket
    ProxyPassReverse ws://127.0.0.1:8065/api/v%{env:MATCH_APIVERSION}/%{env:MATCH_APIUSERS}websocket
    ProxyPassReverseCookieDomain 127.0.0.1 subdomain.domain.in
  </LocationMatch>

  <Location />
    Require all granted
    ProxyPass http://127.0.0.1:8065/
    ProxyPassReverse http://127.0.0.1:8065/
    ProxyPassReverseCookieDomain 127.0.0.1 subdomain.domain.in
  </Location>

</VirtualHost>

Здесь я отредактировал заголовки, которые разрешены только для всех поддоменов моего домена.

...