我有以下代码:
const URL = 'https://www.tophtml.com/snl/15.mp3';
window.addEventListener('load', function() {
const button_load = document.querySelector('.button_load');
button_load.addEventListener('click', async function() {
let url = URL + '?nocache='+(new Date()).getTime();
let arrayBuffer = await fetchData(url, 501, 510);
console.log('This is the response itself:');
console.log(arrayBuffer);
});
});
function fetchData(url, byte_from, byte_to) {
return new Promise((resolve, reject) => {
var request = new XMLHttpRequest();
request.responseType = 'arraybuffer';
request.open('GET', url, true);
request.setRequestHeader("Range", "bytes=" + byte_from + "-" + byte_to);
request.onload = function() {
resolve(request.response);
}
request.onreadystatechange = function() {
if (this.readyState == this.HEADERS_RECEIVED) {
console.log('These are the "Response Headers" visible to JavaScript:');
console.log(request.getAllResponseHeaders());
}
}
request.send();
});
}
<button class="button_load">Load</button>
您也可以在这里找到
https://codepen.io/anon/pen/OBJqZG?editors=1010
我的问题是,由于某种原因,Content-Range
的{{1}}响应标头不可见,如下图所示:
有什么想法吗?
谢谢!
答案 0 :(得分:2)
有什么想法吗?
这很简单,content-range
是响应标头,而不是是请求标头。可以从客户端使用XMLHttpRequest.prototype.overrideMimeType
设置的唯一响应标头是content-type
。
如果通过Access-Control-Expose-Headers
响应标头公开了该信息,则可以使用以下方法进行检索:
request.getResponseHeader('Content-Range')