首页 > 解决方案 > .NET Core + Nginx 丢失 HTTP 标头

问题描述

我正在使用自定义标头向我的 API 发送 HTTP GET 请求

var request = new RestRequest(endpoint, Method.GET);
request.AddHeader("__Test", data);
var response = client.Execute(request);

在 localhost 上一切正常,但是当我在使用 Nginx 的服务器上部署 API 时,此标头“丢失”

这是我的 nginx 配置

location / {
    proxy_pass         http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection keep-alive;
    proxy_set_header   Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
}

启动.cs

app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

app.UseHttpsRedirection();

这在本地主机上工作正常,但在服务器上不行:

HttpContext.Request.Headers.TryGetValue("__Test", out var data)

有人知道会出什么问题吗?

标签: c#nginxasp.net-core

解决方案


出现问题是因为我__在标题名称中使用了

解决方案:

利用

underscores_in_headers on;

nginx.conf


推荐阅读