CORS方法参数似乎不起作用?

CORS方法参数似乎不起作用?,cors,asp.net-web-api,Cors,Asp.net Web Api,我在ASP.NET Web API项目中启用了CORS。目前,它设置为仅允许通过我的客户端应用程序进行访问,如下所示: [EnableCorsAttribute("http://localhost:44051", "*","post")] public class ProductsController : ApiController 但是,这也允许GET请求。我认为,通过将“post”指定为最后一个参数,只有post请求才允许跨源 知道这里出了什么问题吗?用于启用所有域 [EnableCors

我在ASP.NET Web API项目中启用了CORS。目前,它设置为仅允许通过我的客户端应用程序进行访问,如下所示:

[EnableCorsAttribute("http://localhost:44051", "*","post")]
public class ProductsController : ApiController
但是,这也允许GET请求。我认为,通过将“post”指定为最后一个参数,只有post请求才允许跨源

知道这里出了什么问题吗?

用于启用所有域

  • [EnableCors(来源:,标题:,方法:*”)
  • 设置允许的HTTP方法

    [EnableCors]属性的methods参数指定允许哪些HTTP方法访问资源。要允许所有方法,请使用通配符值“*”。以下示例仅允许GET和POST请求

    [EnableCors(origins: "http://www.example.com", headers: "*", methods: "get,post")]
    public class TestController : ApiController
    {
        public HttpResponseMessage Get() { ... }
        public HttpResponseMessage Post() { ... }
        public HttpResponseMessage Put() { ... }    
    }
    

    只是一个猜测,但可能CORS策略不适用于您,因为您不是来自不同的来源?如果我去掉该属性,我会得到“无访问控制允许来源标头存在”错误。所以我假设应用了CORS策略。您是使用浏览器、postman之类的扩展还是Fiddler之类的工具进行测试?也许可以用各种各样的客户端进行测试,看看你是否看到了不同的东西。你的客户端也在localhost:44051上吗?我正在用Chrome进行测试。是我的客户在44051上。我的Web API服务位于不同的端口上。这直接来自文档。我不明白这是怎么回答我的问题的。我使用文档中的属性并指定“post”。由于该属性“指定允许使用哪个HTTP方法”。。。那么,在我的示例中,我的客户端应用程序应该不能访问GET。但它可以。我的例子对你有用吗?