6

我正在尝试将 ASP.NET Web API Selfhosted 应用程序与 CORS 一起使用,但出现错误:

XMLHttpRequest 无法加载http://localhost:5555/api/product。Access-Control-Allow-Origin 不允许 Origin null。

我该如何处理?

4

3 回答 3

14

添加类

public class CustomHeaderHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
    {
    return base.SendAsync(request, cancellationToken)
        .ContinueWith((task) =>
        {
            HttpResponseMessage response = task.Result;
            response.Headers.Add("Access-Control-Allow-Origin", "*");
            return response;
        });
    }
}

并在配置中注册

var config = new HttpSelfHostConfiguration("http://localhost:5555");    
config.MessageHandlers.Add(new CustomHeaderHandler());
于 2013-06-27T06:32:17.370 回答
2

WebAPIContrib 项目有一个简单的 Cors MessageHandler。或者,如果您正在寻找更复杂的解决方案,Thinktecture.IdentityModel项目支持 CORS。

于 2013-06-24T14:00:22.790 回答
1

您也可以通过从NugetMicrosoft.AspNet.WebApi.Cors安装包来做到这一点。

这将允许您的 API 启用Cross-Origin Resource Sharing (CORS). 你可以这样做:

 var config = new HttpSelfHostConfiguration(_baseAddress);
 config.EnableCors(new EnableCorsAttribute("*", headers: "*", methods: "*"));
于 2019-07-02T23:22:36.413 回答