2017-09-20 4 views
0

Je dois montrer certains sites dans un iframe et je ne peux pas le faire directement car certains de ces sites ont l'en-tête X-Frame-Options défini sur 'SAMEORIGIN'. Comme un moyen de contourner cela, j'ai essayé d'utiliser un proxy inverse dans Apache. Voici la configuration de mon apachePourquoi le proxy suivant ne contourne pas l'en-tête X-Frame-Options?

<VirtualHost *:80> 
ServerName google.local 
ProxyRequests Off 

DocumentRoot /var/www/html/iframe-test 

ProxyPass /test http://www.oracle.com/index.html 
ProxyPassReverse /test http://www.oracle.com/index.html 

ErrorLog /var/log/apache2/google.local-error.log 
CustomLog /var/log/apache2/google.local-access.log combined 

<Location *> 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    # Header always append X-Frame-Options "ALLOW-FROM all" 
    Header add test-header 'test' 
</Location> 

Mais je ne peux pas charger le site en iframe et je reçois l'erreur Load denied by X-Frame-Options: https://www.oracle.com/index.html does not permit cross-origin framing.

Répondre

0

Le problème avec la configuration ci-dessus est que le proxy ne fonctionnait que pour protocole http. Mais comme indiqué dans le message d'erreur de la console, le site externe redirige automatiquement http vers https automatiquement.
Donc, pour gérer les requêtes https, il suffisait d'activer ssl dans apache et d'activer SSLProxyEngine. Pour ce faire,

  1. course sudo a2enmod ssl sur le terminal
  2. ajoutez la ligne 'SSLProxyEngine sur' la configuration ci-dessus

    <VirtualHost *:80> 
        ServerName google.local 
    
        ProxyRequests On 
        ProxyPreserveHost Off 
        SSLProxyEngine On 
    
        DocumentRoot /var/www/html/iframe-test 
    
        ProxyPass /test http://www.oracle.com/index.html 
        ProxyPassReverse /test http://www.oracle.com/index.html 
    
        ErrorLog /var/log/apache2/google.local-error.log 
        CustomLog /var/log/apache2/google.local-access.log combined 
    
        <Location *> 
         AllowOverride All 
         Order allow,deny 
         Allow from all 
         # Header always append X-Frame-Options "ALLOW-FROM all" 
         Header add test-header 'test' 
        </Location> 
    </VirtualHost>