我在Angular 9.1.0和.net核心3.0.100上工作,在这方面我在respone.header.get(‘分页’)中得到空值。
当我从我的WebApi向postman发送呼叫时,显示正确的结果是post man header
下面是web Api的代码`
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();,这是我的用户控制器函数`
[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的代码
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;
})
);
}发布于 2020-05-22 04:57:55
你的angular前端应用程序托管在另一个域上吗?(CORS很重要吗?)如果是真的--也许这会有所帮助:
Access-Control-Allow-Origin报头Access-Control-Expose-Header (使该值在响应头名称本身和Access-Control-Expose-Header中保持一致以消除这种可能性)https://stackoverflow.com/questions/61943428
复制相似问题