web-dev-qa-db-fra.com

Accéder aux ressources du serveur secondaire exécutant un port différent Apache2

J'utilise actuellement un serveur principal à partir d'un Raspberry Pi (32 Go) et un serveur secondaire (4 To) fonctionnant en tant que serveur de stockage de fichiers. Les deux serveurs exécutent Debian Linux avec Apache2 installé. J'ai réussi à importer PHP la sortie du serveur secondaire au serveur principal avec le code suivant:

Serveur principal:

<?php
    $results = file_get_contents('http://example.org:700/handle.php');
    echo $results;
?>

Serveur secondaire

<?php
    header('Access-Control-Allow-Origin: http://example.org');

    //Rest of code
?>

Je suis donc arrivé au problème où le serveur principal pourrait afficher des images et lire des fichiers mp3/wav à partir du serveur secondaire, mais dans mon cas, cela ne fonctionnerait pas avec FLAC (avec un peu de code javascript). Voici quelques informations utiles d'Apache2.conf:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin: "http://example.org"
    Header set Access-Control-Allow-Credentials: true
    Header set Access-Control-Expose-Headers: "Content-Length"
    Header set Access-Control-Allow-Methods: "POST, GET, PUT, OPTIONS, DELETE, HEAD"
    Header set Access-Control-Allow-Headers: "Content-Length"
</IfModule>

En ce moment je reçois cette erreur de google chrome:

XMLHttpRequest cannot load http://example.org:700/song.flac. Request header field Range is not allowed by Access-Control-Allow-Headers in preflight response.

Je veux simplement permettre à tout le trafic entre les deux serveurs d'être sécurisé et sans erreur XMLHttpRequest. Y at-il quelque chose que je peux changer dans le fichier de configuration pour que cela fonctionne?

1
Typewar

voici comment résoudre ce problème:

  1. Sudo nano /etc/Apache2/Apache2.conf

  2. Mettez dans ce code en bas:

.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin: "http://example.org"
    Header set Access-Control-Allow-Credentials: true
    Header set Access-Control-Expose-Headers: "Content-Length"
    Header set Access-Control-Allow-Methods: "POST, GET, PUT, OPTIONS, DELETE, HEAD"
    Header set Access-Control-Allow-Headers: "Range"
</IfModule>
  1. Activer les en-têtes dans le fichier de configuration: en-têtes Sudo a2enmod

  2. Vérifiez les erreurs faire: Sudo apachectl -k graceful

  3. Service Sudo Apache2 recharger

  4. Service Sudo Apache2 redémarrer

Terminé

1
Typewar