.net6 webapi获取Request.UrlReferrer,在program里面判断 UrlReferrer是否等于aaa,不等于的话断开连接,给出范例
时间: 2024-10-24 10:17:59 浏览: 10
在.NET 6 Web API 中,你可以使用`Microsoft.AspNetCore.Http`命名空间中的`HttpRequest`对象来访问HTTP请求的相关信息,包括URL Referer(通常称为`Referrer`)。以下是如何在`Program.cs`文件中的`Startup.cs`服务注册后处理HTTP请求并检查`UrlReferrer`的示例:
```csharp
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
public void ConfigureServices(IServiceCollection services)
{
// 其他服务注册...
services.AddControllers(options =>
{
options.Filters.Add(new ReferrerFilter());
});
}
// 创建一个新的过滤器类来检查URL Referer
public class ReferrerFilter : IActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
if (context.HttpContext.Request.Headers["Referer"] != "http://www.aaa.com")
{
context.Result = new StatusCodeResult(403, "Access Forbidden: URL Referer not equal to 'aaa'");
return;
}
await next();
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...其他配置
app.UseRouting();
// 其他中间件...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
```
在这个例子中,我们创建了一个名为`ReferrerFilter`的过滤器,它会在每个控制器操作执行之前被调用。如果`Referer`头的值不等于"www.aaa.com",则返回403 Forbidden响应。请注意,实际的URL要替换为你的预期值。
阅读全文