最近,我传输了我的简单应用程序,该应用程序由Angular 7客户端和ASP .NET Core Web API(.NET Core v2.2(组成,并遇到了一个奇怪的问题。当我尝试采取一个应在标题中使用身份验证令牌执行邮政请求的操作时,我会收到401-未经授权的服务器错误。
我的生产环境是Ubuntu 18.04,带有代理设置为从端口80重定向到端口5000的Apache2服务器(这是API的位置(。
在开发环境中,一切都完美地工作而没有任何错误,所以我想将请求标题从Apache转移到Kestrel。
我尝试搜索这个问题,并且在Microsoft的网站上,我发现我需要在我的startup.cs文件中使用转发标题方法:
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.UseAuthentication();
我像这样配置了我的启动课程,但没有任何成功。任何帮助或指示试图找到解决方案的方向都将不胜感激。非常感谢您。
尝试添加CUSTOME标头Throgh中间件。
namespace Middleware
{
public class CustomHeader
{
private readonly RequestDelegate _next;
public CustomHeader(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context,
{
var dictionary = new Dictionary<string, string[]>()
{
{
"Access-Control-Allow-Headers",new string[]{ "authorization" }
}
};
//To add Headers AFTER everything you need to do this
context.Response.OnStarting(state => {
var httpContext = (HttpContext)state;
foreach (var item in dictionary)
{
httpContext.Response.Headers.Add(item.Key, item.Value);
}
return Task.FromResult(0);
}, context);
await _next(context);
}
}
}