JavaScript不显示“内容范围”响应标头

时间:2018-09-28 16:38:52

标签: javascript html html5 xmlhttprequest httpresponse

我有以下代码:

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}}响应标头不可见,如下图所示:

enter image description here

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

  

有什么想法吗?

这很简单,content-range响应标头,而不是是请求标头。可以从客户端使用XMLHttpRequest.prototype.overrideMimeType设置的唯一响应标头是content-type

如果通过Access-Control-Expose-Headers响应标头公开了该信息,则可以使用以下方法进行检索:

request.getResponseHeader('Content-Range')
相关问题