使用CorsFeature插件,我如何支持多个源域?我不是在说这里的通配符"*".我说的是在传递一个以上的起源的名单:" http://firstdomain.com,http://seconddomain.com ".
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));
Run Code Online (Sandbox Code Playgroud)
如果您需要更多自定义,那么您可以简单地跳过该功能,并根据需要添加注册多个自定义响应头,例如:
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" },
},
});
}
Run Code Online (Sandbox Code Playgroud)
或者使用全局请求或预请求过滤器:
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");
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1136 次 |
| 最近记录: |