C# CORS不工作ASP.Net MVC5

C# CORS不工作ASP.Net MVC5,c#,asp.net,asp.net-mvc,cors,actionfilterattribute,C#,Asp.net,Asp.net Mvc,Cors,Actionfilterattribute,我正在尝试使用CORS阻止跨域访问我的资源。我也尝试过WebApi.Cors和定制ActionFilter。但我仍然能够从不允许的域访问数据 我的ActionFilter代码在下面 public class AllowCrossSiteAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext)

我正在尝试使用CORS阻止跨域访问我的资源。我也尝试过
WebApi.Cors
和定制
ActionFilter
。但我仍然能够从不允许的域访问数据

我的
ActionFilter
代码在下面

public class AllowCrossSiteAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "https://example.com");
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
            base.OnActionExecuting(filterContext);
        }
}
我的控制器

    [HttpGet]
    [AllowCrossSite]
    public ActionResult Index(string username)
    {
      //return json data
    }

这些头出现在响应头中,但是为什么请求没有阻止来自其他域的请求,我做错了什么?请帮助添加响应标题实际上不会提供任何类型的安全性。常规cors实现只添加那些响应头,以通知客户机应用的cors规则

服务器上的某些东西需要将您的cors规则与请求的
/
方法
etc头进行比较,如果它们不匹配,则返回4XX响应

NuGet包
Microsoft.AspNet.WebApi.Cors
允许您执行以下操作:

[启用CORS(源代码:https://example.com”)


如果您喜欢自己进行自定义实现,可以在上查看此属性的源代码。这会让你对手工制作cors需要做些什么有一个相当好的了解。它比看起来更简单,真的。

谢谢你的回答,我们可以通过任何方式防止
CSRF
跨站点请求伪造
GET
?我仍然能够伪造带有所需
标题的请求,以
获取
请求并获取数据。是的,带有授权标题和访问令牌验证。IdentityServer3/4是这方面的最佳解决方案。在这方面,CORS本身并不是一个足够的安全机制,它只是第一道防线。非常感谢您的时间,我非常感谢。谢谢你给我指出了正确的方向。