这是我第一次使用 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()
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消