2012-02-27 6 views
16

すべてのドメインではなく複数のドメインからXMLHttpRequestsを許可するようにapacheを設定したいとします。Access Control-Allow-Originヘッダーで複数のドメインを処理するようにApacheを設定するにはどうすればよいですか?

Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com" 

しかし、これが唯一のピックアップ:

これは動作します:グーグルでのビットの後、私はこれに着いて

Header set Access-Control-Allow-Origin "*" 

しかし、それは安全ではないですが、私は、私が指定したドメインを許可したいです最初のドメイン、2番目のドメインは許可されません。複数のドメインを正しく指定する方法

答えて

35

ます(「ディレクトリ」グループ内)バーチャルホストファイルにあなたの.htaccessファイルまたはでSetEnvIfディレクティブを使用することができます。

<IfModule mod_headers.c> 
    SetEnvIfNoCase Origin "https?://(www\.)?(mydomain\.com|mydomain2\.com)(:\d+)?$" AccessControlAllowOrigin=$0 
    Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 
</IfModule> 

このコードを使用すると、

  • 「MYDOMAINからのアクセスを許可することができます。 com」および「mydomain2.com」
  • 「www。」の有無にかかわらず、
  • HTTPまたはHTTPS

付きまたはポート番号なしフロント

  • にあなたがで区切られた複数のドメインを追加することができます| regexpを使って異なるサブドメインやパターンを設定することもできます。

  • +0

    最初の提案私はそれを確実に試してみました –

    +3

    「Header add」ではなく「Header set」を入力するだけで、鉱山以外はうまくいきました。 –

    +2

    私が間違っている場合は私を修正してください。しかし、あなたは$ 1を2行目から削除する必要があると思います。 $ 1はhttpsで 's'を取得し、許可されたURLの末尾に追加するので、httpsでのリクエストは失敗します(つまり、.comsになります)。 – jonathanm

    -1
    Header always append Access-Control-Allow-Origin: "http://domain1.com" 
    Header always append Access-Control-Allow-Origin: "http://domain2.com" 
    
    +2

    この回答が現在の問題を解決する際にOPをどのように助けてくれるのか、いくつかの説明を追加してください。 –

    +0

    これは、 'Access-Control-Allow-Origin'ヘッダーが1つの値しか許可しないため動作しません。複数の入力を許可するヘッダーですが、これはそのようなケースの1つではありません。 – jtimmins