首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提供空值的Response.header

提供空值的Response.header
EN

Stack Overflow用户
提问于 2020-05-22 04:37:28
回答 1查看 545关注 0票数 0

我在Angular 9.1.0和.net核心3.0.100上工作,在这方面我在respone.header.get(‘分页’)中得到空值。

当我从我的WebApi向postman发送呼叫时,显示正确的结果是post man header

下面是web Api的代码`

代码语言:javascript
复制
 public static void AddApplicationError(this HttpResponse response, string message)
        {
            response.Headers.Add("Application-Error",message);
            response.Headers.Add("Access-Control-Expose-Header","Application-Error");
            response.Headers.Add("Access-Control-Allow-Origin","*");
        }
        public static void AddPagination(this HttpResponse response, 
            int currentpage, int itemsPerPage, int totalItems, int totalpage)
        {
            var paginationHeader = new PaginationHeader(currentpage, itemsPerPage, totalItems, totalpage);
            var camelCaseFormetter = new JsonSerializerSettings();
            camelCaseFormetter.ContractResolver = new CamelCasePropertyNamesContractResolver();
            response.Headers.Add("pagination", 
                JsonConvert.SerializeObject(paginationHeader, camelCaseFormetter));
            response.Headers.Add("Access-Control-Expose-Header", "Pagination");
        }`

它会发送正确结果并添加报头。在StartUp.Cs类中,我添加了services.AddCors();,这是我的用户控制器函数`

代码语言:javascript
复制
[HttpGet]
        public async Task<IActionResult> GetUsers([FromQuery]UserPrams userPrams)
        {
            var user = await _repo.GetUsers(userPrams);
            var userToReturn = _mapper.Map<IEnumerable<UserForListDTO>>(user);
            Response.AddPagination(user.CurrentPage, user.PageSize, user.TotalCount, user.TotalPages);
            return Ok(userToReturn);
        }`

知道何时从angular应用程序发送请求,当报头中出现值时显示为null。这是Angular的代码

代码语言:javascript
复制
    getUsers(page?, itemsPerPage?): Observable<PaginatedResult<User[]>>
{
  const paginatedResult: PaginatedResult<User[]> = new PaginatedResult<User[]>();
  let params = new HttpParams();
  if (page != null && itemsPerPage != null)
  {
  params = params.append('pageNumber', page);
  params = params.append('pageSize', itemsPerPage);
}
  return this.http.get<User[]>(this.baseUrl + 'user', {observe: 'response', params })
  .pipe(
    map(response => {
      paginatedResult.result = response.body;
      if (response.headers.get('Pagination') != null)
      {
        paginatedResult.pagination = JSON.parse(response.headers.get('Pagination'));
      }
      return paginatedResult;
    })
  );
}

Chrome Header image请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2020-05-22 04:57:55

你的angular前端应用程序托管在另一个域上吗?(CORS很重要吗?)如果是真的--也许这会有所帮助:

  1. 我在邮递员响应中看不到Access-Control-Allow-Origin报头
  2. By spec (rfc)报头名称不区分大小写。但angular实现可能与此规范不同,并且可能仅通过大小写匹配Access-Control-Expose-Header (使该值在响应头名称本身和Access-Control-Expose-Header中保持一致以消除这种可能性)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61943428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档