如何在 Nancyfx 添加请求 header?
How to add a request header in Nancyfx?
我尝试在 ApplicationStartup 覆盖的引导程序中添加它。
pipelines.AfterRequest.AddItemToStartOfPipeline(ctx =>
{
ctx.Request.Headers["x-fcr-version"] = "1";
});
它给我错误。
谁能给我指出正确的方向?
请注意您在尝试操作 Response
时如何尝试设置 Request
?
试试这个..
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");
};
因为这个问题是关于将 headers 添加到 nancy request,我需要这样做,因为我需要添加一个 origin header,和其他一些人在向我的应用程序发出请求时 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["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;
};
我尝试在 ApplicationStartup 覆盖的引导程序中添加它。
pipelines.AfterRequest.AddItemToStartOfPipeline(ctx =>
{
ctx.Request.Headers["x-fcr-version"] = "1";
});
它给我错误。
谁能给我指出正确的方向?
请注意您在尝试操作 Response
时如何尝试设置 Request
?
试试这个..
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");
};
因为这个问题是关于将 headers 添加到 nancy request,我需要这样做,因为我需要添加一个 origin header,和其他一些人在向我的应用程序发出请求时 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["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;
};