asp.net-web-api - owin cors或web api cors

标签 asp.net-web-api oauth cors owin

关于Web-api上的CORS,有100多个问题,关于如何启用CORS,每个人都提供不同的答案。我很困惑,不知道哪个答案是正确的。问题是没有答案实际上是明智地解释了每一行代码的作用的,因此我可以理解和解决我的问题,而不是复制粘贴代码。

无论如何,问题是:我使用owin使用asp.net Web API 2。而且我需要启用CORS。我该怎么做?有OWIN的cors设置

  application.UseCors(CorsOptions.AllowAll);

而且有asp.net Web API的cors设置
   var cors = new EnableCorsAttribute("*", "*", "*", "*");
   config.EnableCors(cors);

如果我没有使用OAUTH,我应该使用哪一个(我之所以指定,是因为当我们不使用OAUTH v / s时,关于SO的答案有所不同)。

我是否需要为OWIN和WEB-API或仅对其中之一启用CORS。如果两者都启用,则存在问题read here

如果有人可以解释我之间的区别,那将非常有帮助
  • OWIN CORS
  • WEB API CORS
  • 使用OWIN / WEBAPI的OAUTH的
  • CORS

  • 也有针对owin托管的Web api的自托管Web api的答案,这进一步增加了混淆:(,抱歉

    最佳答案

    有一种解决方法。由于OWIN和ASP.NET.CORS库是同时工作的。需要将Owin token 或身份验证方法配置为与所有其他API Controller 分开启用CORS。

    首先,不要在Startup.cs中将cors与Owin一起使用:

    public void Configuration(IAppBuilder app)
    {
        //app.UseCors(CorsOptions.AllowAll);
    

    查找GrantResourceOwnerCredentials方法,然后将Access-Control-Allow-Origin添加到上下文中,以便在身份验证完成后返回调用时,浏览器将找到 header 并接受它。
    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "http://localhost" });
    

    现在,将Nuget的Microsoft.AspNet.WebApi.Cors包安装到您的webapi项目中,并将其添加到Register方法
    public static void Register(HttpConfiguration config)
    {
            var cors = new EnableCorsAttribute("http://localhost, ", "accept,accesstoken,authorization,cache-control,pragma,content-type,origin", "GET,PUT,POST,DELETE,TRACE,HEAD,OPTIONS");
    
            config.EnableCors(cors);
    

    为我工作。

    关于asp.net-web-api - owin cors或web api cors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309380/

    相关文章:

    asp.net - 使用 App Insights 将关联 ID 添加到自动生成的遥测数据

    java - 如何解决 Apache Ignite 中的 CORS?

    javascript - 从 JavaScript Web 服务客户端发送 CORS POST 请求返回 http 405 错误

    github - GitHub Pages上的跨源资源共享

    c# - 注入(inject)和 WebAPI : Getting started after install from NuGet

    asp.net-mvc - JSON 响应模型中的时间?

    c# - 在 StartUp 中使用 Autofac 解决每个用户/每个请求的依赖

    ruby-on-rails - 将 Twitter 帐户连接到现有的设计帐户

    java - 在 Android 中实现单用户 OAuth

    oauth - 为什么 OAuth 设计为具有请求 token 和访问 token ?