gpt4 book ai didi

servicestack - ServiceStack 是否支持跨多个来源的 CORS?

转载 作者:行者123 更新时间:2023-12-02 22:05:10 25 4
gpt4 key购买 nike

使用 CorsFeature 插件,如何支持多个源域?我这里不是在谈论通配符“*”。我说的是传递一个包含多个来源的列表:“http://firstdomain.com , http://seconddomain.com ”。

最佳答案

ServiceStack 的 CorsFeature只是一个添加CORS Headers的简单插件到 ServiceStack 的全局响应 header 。它支持指定多个主机(或 * 通配符),例如:

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

如果您需要更多自定义,那么您可以简单地跳过该功能,只需添加注册任意数量的自定义响应 header ,例如:

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" },
},
});
}

或使用全局请求或预请求过滤器:

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");
});
}

关于servicestack - ServiceStack 是否支持跨多个来源的 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com