asp.net-web-api - WebAPI OWIN SelfHosting CORS 支持

标签 asp.net-web-api cors owin self-hosting

我正在使用 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/

相关文章:

javascript - 从表中删除一行并将 bool 标志传递给 API,而不删除实际对象

c# - 如何使用 HttpResponseMessage 返回客户数据

javascript - CORS、通过 vagrant 的 nginx,以及通过 browsersync 提供服务的站点

c# - 使用 Owin 的 Twitter 外部登录给出 HTTP 403(禁止)

c# - Serverless API Gateway/Lambda 下载 PDF 失败

c# - Swagger 5.0 - IDocumentFilter(SwaggerDocument 到 OpenApiDocument)自定义 "Definitions"

javascript - 使用其身份验证方法在 firebase 上创建用户

java - 即使所有 CORS header 都存在,跨源资源共享问题

c# - 在非管理员帐户下运行自托管的 OWIN Web API

c# - 在 Identity 2.0 中成功实现自定义 UserManager<IUser>