C# 将Asp.net核心控制器限制为特定域名

C# 将Asp.net核心控制器限制为特定域名,c#,asp.net-core,C#,Asp.net Core,我有一个asp.net核心版本2中的web API控制器 此控制器必须接收来自一个域的请求,例如test.com test.com的IP一直在变化,因此我不能将此控制器限制为IP 我可以用什么方法 只有一个控制器和另一个控制器允许任何来源 控制器如下所示: [HttpPost] public IActionResult CBack([RequiredFromQuery]string id, [FromBody] New

我有一个asp.net核心版本2中的web API控制器
此控制器必须接收来自一个域的请求,例如test.com
test.com的IP一直在变化,因此我不能将此控制器限制为IP
我可以用什么方法
只有一个控制器和另一个控制器允许任何来源
控制器如下所示:

    [HttpPost]
    public IActionResult CBack([RequiredFromQuery]string id,
                               [FromBody] Newtonsoft.Json.Linq.JObject Cypher)
您可以使用:

这允许您为每个控制器或操作启用跨源请求

不要忘记在Startup.cs文件中使用CORS服务。您还必须先注册自定义策略

// ConfigureServices
services.AddCors(options =>
{
    options.AddPolicy("YourPolicy",
        builder => builder.WithOrigins("http://example.com"));
});

请注意,CORS仅用于浏览器内的Ajax(JavaScript)调用!!!直接发布到操作(即通过Java/C#/C++/Swift Rest客户端或HttpClient)将不受CORS的影响。如果您真的想要实现访问控制,您应该使用类似于过滤器的东西,并从那里检查
Request.Host
属性。不确定这有多可靠,另请注意,在ASP.NET Core 2.2中引入了比当前MVC路由更有用的路由,因为它使路由在管道中很早就可用,允许在中间件级别进行此类检查(目前,直到调用MVC中间件才知道路由,这意味着除了基于操作/控制器的中间件或使用过滤器之外,任何类型的有效阻塞都将延迟)@有没有任何方式的检查请求。主机没有检查在每一个控制器?我希望所有的网站只能接受我的domain@Leandro我认为您最好在web服务器配置(Nginx/Apache)中配置它。不确定这是否是最佳做法,但它会阻止除您允许的地址之外的任何地方的访问。
// ConfigureServices
services.AddCors(options =>
{
    options.AddPolicy("YourPolicy",
        builder => builder.WithOrigins("http://example.com"));
});