如何解决API调用中的GET方法保留标头
我有一个asp.net核心应用程序,并且我希望请求标头保留在响应中。 我在邮递员的请求中有3个标头,
Authorization: "Bearer xxxxx"
azet-Accept: application/json"
azet-UseLatestversion: true
app.Use(
async (context,next) =>
{
context.Response.Headers.Add("X-Content-Type-Options","nosniff");
context.Response.Headers.Add("Content-Security-Policy","default-src 'self'");
context.Response.Headers.Add("Referrer-Policy","no-referrer");
context.Response.Headers.Add(
"Feature-Policy","accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'");
context.Response.Headers.Add("x-frame-options","DENY");
await next();
});
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(
endpoints =>
{
endpoints.MapControllers();
});
我希望在响应中返回诸如azet-UseLatestversion之类的标题
有什么想法吗?
谢谢
[HttpGet]
[Route("{apiPath}/{*requestUri}")]
public async Task<IActionResult> GetAsync(string apiPath,string requestUri = "")
{
var queryString = this.Request.QueryString.Value;
var headers = this.Request
.Headers
.ToDictionary(x => x.Key,y => y.Value.FirstOrDefault());
var response = await this.proxy.GetAsync(
apiPath,requestUri,queryString,headers,this.GetUserScopes());
this.logger.Loginformation(
$"GET statement received from {apiPath} {requestUri} {queryString} {DateTime.Now}.");
var test = response.Content;
if (response.HttpStatus != HttpStatusCode.OK)
{
this.logger.LogError($"{apiPath} {requestUri} {queryString} {response.HttpStatus}: {response.Content}");
return this.StatusCode((int)response.HttpStatus,ErrorResponse.GetDefaultMessageForStatusCode((int)response.HttpStatus));
}
return this.Content(response.Content?.ToString(),response.ContentType);
}
解决方法
我希望请求标头保留在响应中
这是一个工作示例:
app.Use(
async (context,next) =>
{
foreach (var header in context.Request.Headers)
{
if(!header.Key.Contains(":"))
{
context.Response.Headers.Add(header.Key,header.Value.ToString());
}
}
await next();
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。