2014-09-02 48 views
1

所以這是不安全的,並不是我最喜歡的選項,但我只是想知道它有多可能。有沒有一種方法可以在cors請求中找到主機,以便我可以發回Access-Control-Allow-Origin:「domain.com」,其中domain是使用api的任何域。原因是我希望能夠使用基本上通配符的「憑證」。使用MVC網頁api,我可以找出域名cors請求

我可以讓我的最終用戶發送給我他們的主機名,但如果可能的話我寧願從請求本身中提取它。

回答

2

其可能的,假設你正在使用的Microsoft.AspNet.WebApi.Cors在您的API使CORS,你需要定義自己的一個Cors策略提供者:

public class MyApiCorsPolicy : Attribute, ICorsPolicyProvider 
{ 
    private System.Web.Cors.CorsPolicy _policy; 

    public MyApiCorsPolicy() 
    { 
    // Create a CORS policy. 
    _policy = new System.Web.Cors.CorsPolicy 
    { 
     AllowAnyMethod = true, 
     AllowAnyHeader = true, 
     SupportsCredentials = true 
    }; 
    } 

    public Task<System.Web.Cors.CorsPolicy> GetCorsPolicyAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) 
    { 
    // Add the Request origin to the response. 
    _policy.Origins.Add(request.GetCorsRequestContext().Origin); 
    return Task.FromResult<System.Web.Cors.CorsPolicy>(_policy); 
    } 
} 

接下來,在你的ASP.NET網頁API配置代碼,您需要在啓用Cors時通過此政策:

config.EnableCors(new MyApiCorsPolicy()); 
+0

完美謝謝。 – 2014-09-03 17:13:04