您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Asp.Net WebApi2启用CORS无法与AspNet.WebApi.Cors 5.2.3一起使用

Asp.Net WebApi2启用CORS无法与AspNet.WebApi.Cors 5.2.3一起使用

我已经为您创建了一个简化的演示项目。

您可以从本地fiddler 尝试上述 以查看标头。这是一个解释。

cors/blob/master/CORS/Global.asax.cs)

所有这一切都称为WebApiConfig。只是代码组织而已。

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        WebApiConfig.Register(GlobalConfiguration.Configuration);
    }
}

cors/blob/master/CORS/App_Start/WebApiConfig.cs)

您这里的关键方法EnableCrossSiteRequests方法。这就是您需要做的 事情。该EnableCorsAttribute一个全球范围的CORS属性

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        EnableCrossSiteRequests(config);
        AddRoutes(config);
    }

    private static void AddRoutes(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "Default",
            routeTemplate: "api/{controller}/"
        );
    }

    private static void EnableCrossSiteRequests(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute(
            origins: "*", 
            headers: "*", 
            methods: "*");
        config.EnableCors(cors);
    }
}

cors/blob/master/CORS/Controllers/ValuesController.cs)

Get方法接收EnableCors我们全局应用的属性。该Another方法将覆盖global EnableCors

public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { 
            "This is a CORS response.", 
            "It works from any origin." 
        };
    }

    // GET api/values/another
    [HttpGet]
    [EnableCors(origins:"http://www.bigfont.ca", headers:"*", methods: "*")]
    public IEnumerable<string> Another()
    {
        return new string[] { 
            "This is a CORS response. ", 
            "It works only from two origins: ",
            "1. www.bigfont.ca ",
            "2. the same origin." 
        };
    }
}

cors/blob/master/CORS/Web.config)

您无需在web.config添加任何特殊内容。实际上,这就是演示的web.config的样子-它是空的。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
var url = "https://cors-webapi.azurewebsites.net/api/values"



$.get(url, function(data) {

  console.log("We expect this to succeed.");

  console.log(data);

});



var url = "https://cors-webapi.azurewebsites.net/api/values/another"



$.get(url, function(data) {

  console.log(data);

}).fail(function(xhr, status, text) {

  console.log("We expect this to fail.");

  console.log(status);

});


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
dotnet 2022/1/1 18:17:07 有459人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶