我尝试在ApplicationStartup覆盖中的引导程序中添加它。
pipelines.AfterRequest.AddItemToStartOfPipeline(ctx =>
{
ctx.Request.Headers["x-fcr-version"] = "1";
});
它给我错误。
有人能指出我正确的方向吗?
答案 0 :(得分:7)
注意在尝试操纵Request
时如何设置Response
?
试试这个..
protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
{
base.RequestStartup(container, pipelines, context);
pipelines.AfterRequest.AddItemToEndOfPipeline(c =>
{
c.Response.Headers["x-fcr-version"] = "1";
});
}
这就是我Response
的样子..
或..如果您要在模块级设置它,可以使用Connection Negotiation ...
Get["/"] = parameters => {
return Negotiate
.WithModel(new RatPack {FirstName = "Nancy "})
.WithMediaRangeModel("text/html", new RatPack {FirstName = "Nancy fancy pants"})
.WithView("negotiatedview")
.WithHeader("X-Custom", "SomeValue");
};
答案 1 :(得分:0)
因为这个问题是关于向nancy 请求添加标题,我需要添加一个原始标题,以及其他一些人在向我的app api发出请求时需要添加标题。
为了让它发挥作用,我做了以下事情:
//create headers dictionary
var myHeaders = new Dictionary<string, IEnumerable<string>>();
myHeaders.Add("origin",new List<String>{"https://my.app.com"});
//..... snip - adding other headers ....//
var uri = new Uri("https://my.api.com");
var request = new Nancy.Request("OPTIONS", uri, null, myHeaders,"127.0.0.1", null);
我发现阅读nancy request source source有用,作为空参数,( body 和 protocolVersion ),如果没有设置,我通过get初始化。
答案 2 :(得分:0)
出于某种原因,内容协商的答案在我的情况下不起作用,但我找到了另一种方式:
Get["result"] = x=>
{
...
var response = Response.AsText(myModel, "application/json");
response.Headers.Add("Access-Control-Allow-Origin", "http://example.com");
response.Headers.Add("Access-Control-Allow-Credentials", "true");
return response;
};