我的 .NET API 服务器正在向我的 Angular 客户端返回一些数据,并设置 Content-Range
header ,如下所示:
var response = await base.ExecuteAsync(cancellationToken);
const string unit = "items";
response.Headers.Add("Accept-Ranges", unit);
response.Headers.Add("Range-Unit", unit);
response.Content.Headers.ContentRange = new ContentRangeHeaderValue(_requestedFrom, _requestedTo, _totalCount)
{
Unit = unit
};
这看起来工作正常,正如我的网络选项卡所示:Content-Range:items 0-9/122
我遇到的问题是,当我尝试解析这些数据时,解析似乎失败了:
var response = parseRange(headers('Content-Range'));
console.log("response " + response);
控制台记录:响应为空
。有什么想法我做错了吗?
编辑。 parseRange
函数
function parseRange(hdr) {
var m = hdr && hdr.match(/^(?:items )?(\d+)-(\d+)\/(\d+|\*)$/);
if(m) {
return {
from: +m[1],
to: +m[2],
total: m[3] === '*' ? Infinity : +m[3]
};
} else if(hdr === '*/0') {
return { total: 0 };
}
return null;
}
该函数中的 hdr
为空,因此看来 headers()
函数是问题所在?
最佳答案
这里的问题实际上是在服务器端,我需要将内容范围添加到公开的 header 中:
[EnableCors("http://localhost:3000", "*", "*", exposedHeaders: "Content-Range")]
关于javascript - 在 Angular 应用程序中解析 Content-Range header 时出现问题(返回 null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235259/