如何使用普通的javascript(NOT JQUERY)在ajax请求中添加自定义标头?

时间:2016-10-08 19:14:54

标签: javascript ajax

有人可以建议如何使用普通的javascript向AJAX请求添加标头吗?我正在尝试将视频文件上传到服务器,并希望让它知道我发送的文件的文件大小和类型。  我找到了一些解决方案,但这涉及到jquERY,这不是我追求的。

例如:

  Content-Length: 339108
  Content-Type: video/mp4

我的AJAX请求:

 var startUpload = function(){
        var formdata = new FormData();
        formdata.append('requestUpload', 'uploadTicket');

        var xmlhttp = new XMLHttpRequest;

        xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                var response = xmlhttp.responseText;

                if(response == '1'){

                    document.getElementById('UploadBox').innerHTML = '<div id="upWrap"><input type="file" id="vidInput"><button id="submitFile" onclick="">Upload Video<button></div>';

                }
            }
        }
        xmlhttp.open('POST', 'myFile.php');
        xmlhttp.send(formdata);
    }

2 个答案:

答案 0 :(得分:0)

您可以使用XMLHttpRequest的setRequestHeader方法:

var xmlhttp = new XMLHttpRequest();

xmlhttp.setRequestHeader('Content-Type', 'video/mp4');
xmlhttp.setRequestHeader('Content-Length', '339108')

答案 1 :(得分:0)

您必须在致电open()之后但在致电send()之前调用它

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.open('GET', url, true);
xhr.setRequestHeader('accept', 'application/json, text/plain, */*');

并非可以设置所有标头,请参阅此 Forbidden_header_name

提示: 服务器端也应支持Cross-Origin Resource Sharing (CORS),例如Access-Control-Allow-Origin