2

CorsFeature プラグインを使用して、複数のオリジン ドメインをサポートするにはどうすればよいですか? ここでは、ワイルドカード "*" について話しているわけではありません。複数のオリジンのリストを渡すことについて話している: " http://firstdomain.com , http://seconddomain.com ".

4

1 に答える 1

5

ServiceStack のCorsFeatureは、 CORS ヘッダーを ServiceStack のグローバル レスポンス ヘッダーに追加する単純なプラグインです。ホストの数 (または*ワイルドカード) の指定をサポートしています。例:

Plugins.Add(new CorsFeature(
    allowOriginWhitelist = new[]{ "http://domain1.com", "http://domain2.com" }, 
    string allowedMethods = DefaultMethods, 
    string allowedHeaders = DefaultHeaders, 
    bool allowCredentials = false));

さらにカスタマイズが必要な場合は、この機能をスキップして、カスタマイズされた応答ヘッダーを必要な数だけ登録することができます。次に例を示します。

public override void Configure(Container container)
{
    //Permit Cross Origin Resource Sharing for multiple Origins:
    base.SetConfig(new HostConfig
    {
        GlobalResponseHeaders = {
            { "Access-Control-Allow-Origin", "http://domain.com" },
            { "Access-Control-Allow-Methods", "GET, POST, PUT, OPTIONS" },
            { "Access-Control-Allow-Headers", "Content-Type" },
        },
    });
}

または、グローバル リクエストまたは PreRequest フィルタを使用します。

public override void Configure(Container container)
{
    var originWhitelist = new[]{ "http://domain1.com", "http://domain2.com" };

    this.PreRequestFilters.Add((httpReq, httpRes) => {
        var origin = httpReq.Headers.Get("Origin");
        if (originWhitelist.Contains(origin))
        {
            httpRes.AddHeader(HttpHeaders.AllowOrigin, origin);
        }
        httpRes.AddHeader(HttpHeaders.AllowMethods, "GET, POST, PUT, OPTIONS");
        httpRes.AddHeader(HttpHeaders.AllowHeaders, "Content-Type");
    });
}
于 2013-04-27T04:25:22.053 に答える