現在、Raspberry Piのメインサーバー(32 GB)と、ファイルストレージサーバーとして実行されているセカンダリサーバー(4 TB)を実行しています。両方のサーバーは、Apache2がインストールされたDebian Linuxを実行しています。次のコードを使用して、セカンダリサーバーからメインサーバーにPHP出力を取り込むことに成功しました。
メインサーバー:
<?php
$results = file_get_contents('http://example.org:700/handle.php');
echo $results;
?>
セカンダリサーバー
<?php
header('Access-Control-Allow-Origin: http://example.org');
//Rest of code
?>
だから私は、メインサーバーが写真を表示し、セカンダリサーバーからmp3/wavを再生できるという問題に来ましたが、私の場合、FLACでは機能しません(javascriptコードが少しあります)。 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>
今、私は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.
2つのサーバー間のすべてのトラフィックをセキュリティで保護し、XMLHttpRequestエラーを発生させないようにするだけです。この機能を実現するために設定ファイルで変更できるものはありますか?
これはこれを修正する方法です:
Sudo nano /etc/Apache2/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: "Range"
</IfModule>
設定ファイルでヘッダーを有効にします:Sudo a2enmod headers
エラーを確認してください:Sudo apachectl -k graceful
SudoサービスApache2リロード
SudoサービスのApache2の再起動
完了