相关疑难解决方法(0)

有没有办法动态更新Web API CORS中允许的源列表

我正在尝试为我的.Net Web API应用程序中的某些域启用CORS,并且能够通过此代码在Application Start上执行此操作.

public static void Register(HttpConfiguration config)
{
    //below comma separated string is built from database
    var domains = "http://www.myfirstdomain.com,http://www.myseconddomain.co.uk .... about 130 domains more..";
    config.EnableCors(new EnableCorsAttribute(domains, "*", "*"));
Run Code Online (Sandbox Code Playgroud)

但是,如果在应用程序处于活动状态时添加了新域,则在回收应用程序池并再次构建此列表之前,将不允许这些域发布.

有没有什么办法可以在我的应用程序生命周期内更新此列表?我知道我可以定期回收应用程序池,但这会导致某些请求出现延迟,理想情况下我可以不这样做.

我知道我可以在控制器方法上启用它,即..

[EnableCors("http://domain1.com,http://domain2.com", "*", "*")]
public HttpResponseMessage PostAsync([FromBody] MyRequest myRequest)
{
Run Code Online (Sandbox Code Playgroud)

但是,逗号分隔参数必须再次声明为常量,因此不能是动态的.

我是否遗漏了一些明显的显而易见的事情,或者是否有人会想到这样做的好方法?

编辑

这是我尝试编写自己的自定义EnableCors属性.

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false)]
public class EnableCorsByDomainAttribute : Attribute, ICorsPolicyProvider
{
    private readonly CorsPolicy _policy;

    public EnableCorsByDomainAttribute()
    {
        _policy = new CorsPolicy
        {
            AllowAnyMethod = true,
            AllowAnyHeader = true
        };

        var …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax http cors asp.net-web-api

8
推荐指数
1
解决办法
5464
查看次数

标签 统计

ajax ×1

asp.net ×1

asp.net-web-api ×1

cors ×1

http ×1