首页 > 解决方案 > Javascript XMLHttpRequest 对预检错误的响应

问题描述

我正在尝试使用纯 javascript 做一个简单的获取请求,我有一段时间没有这样做了。我必须通过基本身份验证才能获得此请求。它在邮递员中工作得很好,用户界面使只需输入用户通过就可以变得简单。我在给我这个“预检响应具有无效的 HTTP 状态”错误的代码中做了什么?我没有正确设置请求吗?我正在使用 chrome 跨域扩展并已打开。所以不要认为这是问题所在。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div id="data">

    </div>


<button onclick="dashboard()">click me</button>
    <script>

        function dashboard() {
            var request = makeHttpObject();
            // var form_id = BO.getDataId();
            // var app_id = app.getUID();
            var user = "blah";
            var password = "blue"
            var app_id = "f4asdsd4sasdgrer5e78b-fcsdasssd77s-4ef4-8asefxzxcze207be8";
            var link = `https://found.mainstream.org/authentixate-basic/secure/1/data/${app_id}/F_Form1`;

            request.open("GET", link, true);
            request.setRequestHeader("Authorization", "Basic " + btoa(user +":"+ password));


            request.onreadystatechange = function () {
                if (request.readyState == 4)
                    getAttachmentInfo(request.responseText);
            };
            request.send(null);


            function makeHttpObject() {
                try {
                    return new XMLHttpRequest();
                } catch (error) { }
                try {
                    return new ActiveXObject("Msxml2.XMLHTTP");
                } catch (error) { }
                try {
                    return new ActiveXObject("Microsoft.XMLHTTP");
                } catch (error) { }

                throw new Error("Could not create HTTP request object.");
            }

            function getAttachmentInfo(data) {
                var parser, xmlDoc;

                if (window.DOMParser) {
                    parser = new DOMParser();
                    xmlDoc = parser.parseFromString(data, "text/xml");
                } else {
                    // Internet Explorer 
                    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async = false;
                    xmlDoc.loadXML(data);
                }
                for (i = 0; i < xmlDoc.getElementsByTagName("F_Form1").length; i++) {
                    // var FilesObj = {
                    //     "attachmentFileName": xmlDoc.getElementsByTagName("F_Attachment")[i].childNodes[1].firstChild.nodeValue,
                    // }
                    //console.log("data",xmlDoc.getElementsByTagName("F_Form1")[i].attributes)
                    console.log("data",xmlDoc.getElementsByTagName("F_Form1")[i].attributes[3])
                }

            }
        }

    </script>
</body>

</html>

标签: javascriptxmlxmlhttprequest

解决方案


事实证明这是一个CORS问题。代码在生产环境中运行良好,但不在我的本地


推荐阅读