我正在使用 Microsoft.AspNet.WebApi V5.2.3、Microsoft.Owin.Host.HttpListener 3.0.1。从以下配置开始:
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
appBuilder.UseWebApi(config);
}
API Controller 类声明为:
[EnableCors("*", "*", "*")]
public class CWebAPIController : ApiController
{
[Route("API/System/Login"), HttpGet]
public IHttpActionResult Login(string UserID, string Password)
{
.... bla bla bla .....
}
}
我可以在同一台计算机上使用 HttpClent 调用上面的 API,但是如果我尝试从另一台计算机(在同一子网内)调用 API,我会收到 400 BadRequest 响应。
我相信这是 CORS 问题,但我可以知道如何解决这个问题。在 google 中搜索会产生很多结果,并且 WebApi 的版本/实现太多,我尝试了一整天后不知道哪个是正确的。
提前致谢
最佳答案
EnableCors 属性应该适用于您的 API Controller 。或者,您可以执行以下操作之一。
如果你想允许从任何计算机访问,那么你可以使用
appBuilder.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
否则,如果您想控制允许使用哪些域/计算机,则使用
var cors = new EnableCorsAttribute("www.example.com", "*", "*");
config.EnableCors(cors);
您需要安装 Microsoft.Owin.Cors 包。
关于asp.net-web-api - WebAPI OWIN SelfHosting CORS 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166054/