如何在 ASP.NET Web API SelfHost 应用程序中使用 CORS?
Posted
技术标签:
【中文标题】如何在 ASP.NET Web API SelfHost 应用程序中使用 CORS?【英文标题】:How to use CORS in ASP.NET Web API SelfHost applications? 【发布时间】:2013-06-20 23:37:06 【问题描述】:我正在尝试将 ASP.NET Web API Selfhosted 应用程序与 CORS 一起使用,但出现错误:
XMLHttpRequest 无法加载 http://localhost:5555/api/product。 Access-Control-Allow-Origin 不允许 Origin null。
我该如何处理?
【问题讨论】:
【参考方案1】:您也可以通过从Nuget 安装Microsoft.AspNet.WebApi.Cors
包来做到这一点。
这将允许您的 API 启用 Cross-Origin Resource Sharing (CORS)
。你可以这样做:
var config = new HttpSelfHostConfiguration(_baseAddress);
config.EnableCors(new EnableCorsAttribute("*", headers: "*", methods: "*"));
【讨论】:
【参考方案2】:WebAPIContrib 项目有一个简单的 Cors MessageHandler。或者,如果您正在寻找更复杂的解决方案,Thinktecture.IdentityModel 项目支持 CORS。
【讨论】:
@SeyedMortezaMousavi 现在 Web API 也支持 CORS。【参考方案3】:添加类
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());
【讨论】:
@Nerve 不适合我,我仍然得到,“XMLHttpRequest 无法加载 localhost:1125/api/Home/Data/somestring 请求的资源上不存在'Access-Control-Allow-Origin'标头。来源' localhost:1025' 因此不允许访问。"以上是关于如何在 ASP.NET Web API SelfHost 应用程序中使用 CORS?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ASP.NET 核心 mvc 向 asp.net 核心中的 Web API 发出 PUT 请求?
如何从 ASP.NET MVC 到 ASP.NET Core Web API 的 PUT?
如何使用 HTTP 连接通过托管在 IIS 上的 ASP.NET 成员身份保护 ASP.NET Web API [重复]
如何在 ASP.NET Web API 中为 Json.NET 设置自定义 JsonSerializerSettings?