我正在尝试将 ASP.NET Web API Selfhosted 应用程序与 CORS 一起使用,但出现错误:
XMLHttpRequest 无法加载http://localhost:5555/api/product。Access-Control-Allow-Origin 不允许 Origin null。
我该如何处理?
我正在尝试将 ASP.NET Web API Selfhosted 应用程序与 CORS 一起使用,但出现错误:
XMLHttpRequest 无法加载http://localhost:5555/api/product。Access-Control-Allow-Origin 不允许 Origin null。
我该如何处理?
添加类
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());
WebAPIContrib 项目有一个简单的 Cors MessageHandler。或者,如果您正在寻找更复杂的解决方案,Thinktecture.IdentityModel项目支持 CORS。
您也可以通过从NugetMicrosoft.AspNet.WebApi.Cors
安装包来做到这一点。
这将允许您的 API 启用Cross-Origin Resource Sharing (CORS)
. 你可以这样做:
var config = new HttpSelfHostConfiguration(_baseAddress);
config.EnableCors(new EnableCorsAttribute("*", headers: "*", methods: "*"));