【问题标题】:.Net Core 3.1 API, Angular 9, Application-Error header bad encoding.Net Core 3.1 API、Angular 9、Application-Error 标头错误编码
【发布时间】:2020-03-06 21:50:14
【问题描述】:

我以这种方式在 .Net Core 3.1 API 中设置 Application-Error 标头:

response.Headers.Add("Application-Error", message);

在浏览器开发工具中,消息看起来很棒:

但是当我在 Angular 中收到这条消息时,国家字符很糟糕:

if(error instanceof HttpErrorResponse){
  const applicationError = error.headers.get('Application-Error');
  console.log("msg: ", applicationError)
}

我不知道编码错误是在 .Net Core 端还是在 Angular 端。

你能给我一个提示吗?

【问题讨论】:

  • 你使用gzip压缩吗?
  • 不,我不使用它。
  • 你如何添加它?我无法将消息添加到响应标头,因为 HTTP 标头不接受非 ASCII 字符。对于您的情况,请查看 stackoverflow.com/questions/41718364/…

标签: angular character-encoding http-headers asp.net-core-webapi


【解决方案1】:

我通过邹星提供的链接解决了这个问题。

在 .Net Core 方面,我需要将代码修改为:

response.Headers.Add("Application-Error", WebUtility.UrlEncode(message));

在 Angular 方面,我需要修改代码:

let decoded = decodeURIComponent(applicationError).replace(/\+/g," ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 2018-07-06
    • 1970-01-01
    • 2020-08-22
    • 2021-05-31
    • 1970-01-01
    • 2021-06-17
    • 2020-09-05
    相关资源
    最近更新 更多