代码之家  ›  专栏  ›  技术社区  ›  davidesp

JavaScript的“Content Range”响应头不可见[重复]

  •  0
  • davidesp  · 技术社区  · 6 年前

    我有以下代码:

    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 JavaScript 如下图所示:

    enter image description here

    你知道这是怎么回事吗?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  2
  •   Knu    6 年前

    你知道这是怎么回事吗?

    很简单, content-range 是一个 标题和 XMLHttpRequest.prototype.overrideMimeType 来自客户端的是 content-type

    如果暴露在外 Access-Control-Expose-Headers 您可以使用以下方法检索响应头:

    request.getResponseHeader('Content-Range')
    
    推荐文章