为了账号安全,请及时绑定邮箱和手机立即绑定

.Net 核心全局过滤器

.Net 核心全局过滤器

C#
繁华开满天机 2022-11-22 09:13:00
这是我第一次使用 aFilter并且它不工作。这是一个非常简单的例子。没有向响应标头添加任何内容,也没有在过滤器类中命中断点。我希望这是一个全局过滤器。我错过了什么或做错了什么?过滤器:public class TestFilter : IResultFilter{    public void OnResultExecuted(ResultExecutedContext context)    {        throw new NotImplementedException();    }    public void OnResultExecuting(ResultExecutingContext context)    {        var headerName = "OnResultExecuting";        context.HttpContext.Response.Headers.Add(            headerName, new string[] { "ResultExecutingSuccessfully" });    }}启动.CSpublic void ConfigureServices(IServiceCollection services){    var logger = _loggerFactory.CreateLogger<Startup>();    services.AddCors();    services.AddMvc(options =>    {        options.Filters.Add(new TestFilter());    });}控制器方法:[HttpGet("", Name = "search")][ProducesResponseType(typeof(PagedResult<SearchViewModel>), (int)HttpStatusCode.OK)]public async Task<IActionResult> Get()
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

为了让 javascript 在发出跨源请求时读取响应标头,您需要在应用程序中构建CORS策略,将某些标头公开给客户端ASP.NET Core


services.AddCors(options =>

{

    options.AddPolicy("ResultHeader", policy =>

    {

        policy

            .AllowAnyOrigin()

            .AllowAnyMethod()

            .AllowAnyHeader()

            .WithExposedHeaders("OnResultExecuting"); //headers to be exposed

    });

});

你在全球范围内使用它


app.UseCors("Default");

或仅针对特定操作/控制器


[HttpGet("", Name = "search")]

[ProducesResponseType(typeof(PagedResult<SearchViewModel>), (int)HttpStatusCode.OK)]

[EnableCors("ResultHeader")] //enabling cors requests

public async Task<IActionResult> Get()


查看完整回答
反对 回复 2022-11-22
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信