我正在尝试在aspnetcore v1.1.2中向HttpResponse添加多个Allow Headers。当我运行下面的代码时,标题会被添加到HttpResponse上的IHeaderDictionary中,但是当序列化时,集合中只有最后一个标题(在本例中为“POST”)实际上被添加到http响应中。有没有其他人经历过这个,或者我做错了什么?
这是我正在使用的代码。
public override async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
{
context.HttpContext.Response.Headers.Add("Allow", new StringValues(new [] {"GET", "POST"}));
await next();
}
我在ResultFilterAttribute中执行此操作。
非常感谢...
答案 0 :(得分:0)
这应解决问题:
context.HttpContext.Response.Headers.Add("Allow", "GET, POST");
答案 1 :(得分:0)
您的代码很好,您可能需要更改的唯一地方是您的响应解析逻辑。仔细检查您的回复 - 它包含2个Allow
标题,而不是包含2个值的标题:
Allow: GET
Allow: POST
简单示例: 让我们说你有下一个控制器动作:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
[AddHeader]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
使用curl获取请求:
curl -X GET http://localhost:5000/api/values -i
响应:
HTTP/1.1 200 OK
Date: Fri, 23 Jun 2017 22:23:24 GMT
Content-Type: application/json; charset=utf-8
Server: Kestrel
Transfer-Encoding: chunked
Allow: GET
Allow: POST
["value1","value2"]