当前位置: 首页 > 知识库问答 >
问题:

我的api调用在javascript中不工作,但在postman和browser中工作得很好

轩辕庆
2023-03-14

这是html文件

    <html>
    <head>
        <title>"api call"</title>

    </head>
        <body>
            <div id="demo">

                <script>
                    function list() {
                        var xhttp = new XMLHttpRequest();
                        xhttp.open("GET","192.168.0.101:8000/students/",true);
                        xhttp.setRequestHeader("Content-type", "application/json");
                        xhttp.setRequestHeader("Authorization", "Token ad4140b1caa4f98160bdc979a71a7215ae5972fe");
                        xhttp.send();
                        var1 response = JSON.parse(xhttp.responseText);
                        document.write(var1);
                    }

                </script>

                <button type="button" onclick="list()">click to get the list</button>

            </div>
        </body>
</html>

当我在浏览器中运行这个时,请求不会被发送(我在后端的跟踪球中看不到任何东西),url工作正常,如果在浏览器和邮递员中使用,这是邮递员请求和响应的截图

var1 response = JSON.parse(xhttp.responseText);

共有1个答案

浦德义
2023-03-14

我认为您的问题出在xhttp.open代码上。当您请求执行“get”时,将末尾的布尔值设置为true将意味着请求将异步执行。您应该将此变量设置为false,这意味着该方法在收到响应之前不会返回

尝试改变

xhttp.open("GET","192.168.0.101:8000/students/",true);

致:

xhttp.open("GET","192.168.0.101:8000/students/",false);

由于您似乎是服务器的所有者,您可以尝试在服务器上手动实现CORS头,或者使用JSONP(绕过CORS)。这里有一些关于CORS和在MDN上实现的信息。还有一个很好的源码。祝你好运!

 类似资料:
  • 我正在尝试实现这个APIhttps://api.bnm.gov.my/portal#operation/ERLatest 根据上面的URL,它的GET请求必须带有值为“application/vnd.BNM.API.v1 json”的Accept-herader 当我尝试与邮递员,可以得到回应- 这就是我所做的,以在我的Spring启动应用程序中获得相同的响应- 但它没有得到正确的回应,我得到的是

  • 我正在尝试调用Workday招聘网络服务的Put_Background_Check操作。我已经在SoapUI中打开了WSDL文件,并成功地发送了以下XML。。。 我得到以下回应。。。 问题是,当我试图在Postman(或cURL或Python请求)中用相同的标题重新创建相同的POST请求时,我会得到无效的用户名或密码错误。SoapUI在这里做什么特别的事情吗?本案的回应如下...

  • 我能够登录我的本地(和远程服务器)与以下curl(我用Postman生成)...我可以登录成功使用另一个API客户端(Rest)与我试图在Postman中使用相同的参数/头/体。我已经关闭了SSL证书验证和发送邮递员令牌头设置(每其他堆栈溢出答案)... 卷曲: Curl-X POST\http://localhost:8080/api/user/login\-H'接受:应用程序/json'\-H

  • 我有一个python代码,用来创建一个json文件,作为post请求中的数据。 变量如下所示: 当我打印上述变量时,我得到以下输出: 当我在我的邮递员请求上使用以下输出时,它会像我期望的那样工作。但是当我使用相同的变量发送带有以下函数的超文本传输协议请求时,我得到了一个错误。 为什么我的输出在postman上工作,而不是在python本身?

  • 我在Flask的RESTful API中编写了POST方法,并成功地使用命令行HTTP客户端HTTPie将数据添加到服务器。但是当我在Android上尝试时,出现了一个错误。以下是客户端的代码: 烧瓶的误差: 192.168.0.101-[13/May/2019 03:37:44]“POST/Factories HTTP/1.1”500-回溯(最近的调用): 文件“C:\users\steve\p

  • 不确定是否“内容安全策略:页面的设置阻止了在https://localhost:5000/favicon.ico(”default-src“)加载资源。”会影响。我试图使用network选项卡查看此请求,但我收到了这条消息。 它还使用Swagger UI工作:https://Swagger.io/tools/swagger-ui/