複数のドメインでのアクセス制御許可オリジン 質問する

複数のドメインでのアクセス制御許可オリジン 質問する

web.config で、access-control-allow-originディレクティブに複数のドメインを指定したいと思います。 は使いたくありません*。次の構文を試しました:

<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />

これです

<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />

これです

<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />

そしてこれ

<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />

しかし、どれも機能しません。正しい構文は何ですか?

ベストアンサー1

IIS 7.5+ および Rewrite 2.0 の場合は以下を使用できます。

<system.webServer>
   <httpProtocol>
     <customHeaders>
         <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
         <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,PUT,DELETE" />
     </customHeaders>
   </httpProtocol>
        <rewrite>            
            <outboundRules>
                <clear />                
                <rule name="AddCrossDomainHeader">
                    <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                        <add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?domain1\.com|(.+\.)?domain2\.com|(.+\.)?domain3\.com))" />
                    </conditions>
                    <action type="Rewrite" value="{C:0}" />
                </rule>           
            </outboundRules>
        </rewrite>
 </system.webServer>

サーバー変数の説明RESPONSE_Access_Control_Allow_Origin部分:
Rewrite では、その後に任意の文字列を使用できます。RESPONSE_残りの単語をヘッダー名として使用して、レスポンス ヘッダーが作成されます (この場合は Access-Control-Allow-Origin)。Rewrite では、ダッシュ "-" の代わりにアンダースコア "_" が使用されます (rewrite ではダッシュに変換されます)。

サーバー変数の説明HTTP_ORIGIN:
同様に、Rewrite では、プレフィックスとして使用して任意のリクエスト ヘッダーを取得できますHTTP_。ダッシュの場合も同じルールが適用されます (ダッシュ "-" の代わりにアンダースコア "_" を使用します)。

おすすめ記事