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

Api GET请求返回空响应,但postman不返回

包唯
2023-03-14

我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:请求的资源上不存在“Access Control Allow Origin”头

我暂时解决这个错误,方法是在链接之前附加https://cors-anywhere.herokuapp.com链接,或者有时使用Moesif Cors-On-where chrome扩展。读取现在返回200 ok状态,但响应是空的。

body: ReadableStream
locked: true
__proto__: ReadableStream
bodyUsed: true
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "OK"
type: "cors"

response: {}
data: undefined

但是,如果我在postman上运行相同的查询,它将返回预期的响应json对象。我该如何解决这个问题?

 const searchFlightData = (to, from, depDate, adults) => {
        fetch(`http://api.travelpayouts.com/v1/prices/direct?origin=${from}&destination=${to}&depart_date=2017-11&return_date=2017-12&token=${tp_token}`)
            .then(response => {
                if (response.ok) {
                    console.log(response)
                    return response
                }
                else
                    console.log(`Looks like something went wrong. Status: ${response.status}`)
            })
            .then(response => {
                response.json()
                console.log("response: " + JSON.stringify(response))
            })
            .then(data => {
                console.log("data: " + data)
            })
            .catch(error => {
                console.log(error)
            })
}

共有3个答案

于正志
2023-03-14

在前端请求中添加accept all的标头,如下所示

端木昱
2023-03-14

响应。json()返回一个promise,您必须等待解决此问题。如果希望链中的下一个,然后接收某些内容,则还必须返回一些内容。

像这样的东西应该工作:

 const searchFlightData = (to, from, depDate, adults) => {
        fetch(`http://api.travelpayouts.com/v1/prices/direct?origin=${from}&destination=${to}&depart_date=2017-11&return_date=2017-12&token=${tp_token}`)
            .then((response) => {
                if (response.ok) {
                    return response
                } else {
                    throw `Looks like something went wrong. Status: ${response.status}`;
                }
            })
            .then(response => response.json())
            .then(data => {
                console.log("data: " + data)
            })
            .catch(error => {
                console.log(error)
            })
}

或者用你的控制台。日志:

return response.json().then((data) => console.log(data));

仲孙逸明
2023-03-14

如果要从服务器请求数据,则必须将其位于同一域上,或者必须设置“Access-Control-Allow-Origin”标题。我不会依赖https://cors-anywhere.herokuapp.com

对于开发,您可以使用代理服务器来绕过此限制。(许多框架已经有了解决方案,我不知道您使用哪一个)

 类似资料:
  • 我有一个简单的helper来发送post请求并返回结果,它应该与自定义构建的API进行通信,所有的工作都离不开一个特定的URL。 我的helper方法如下所示(使用RestSharp) 我要求如下: 非常感谢任何帮助。

  • 所以我想打印响应的结果,然后使用gson为模型生成数据,但响应永远不会得到返回,因为调用了onResponse。! 如果你注意到Logcat,日志。我的回答没有显示。。!?但是在使用该请求的活动的onSuccess中,它通常会显示日志,但是如果日志包含响应对象,它不会显示哪个非常奇怪,也没有任何意义。。!? Logcat公司 我尝试使用具有相同url和参数的PostMan测试请求,它通常返回jso

  • 我想使用GooglePlaceAPI和自动完成视图。我有开发者控制台上的android和浏览器密钥。但当我尝试这些键API时,它返回空响应。 Logcat: D/Volley:[2651]a.a:请求的HTTP响应= 我的代码: 在onpostexecute日志中: 我是新来的google地方api,请帮我找到什么是错误的。

  • 问题内容: 我正在使用Node的模块发出 HTTP 请求,但是在上,返回的块似乎并不满足完整的请求响应。这是我的代码: 有没有办法在结束请求之前等待完整的输出?难道我做错了什么?谢谢! 问题答案: 您还应该收听“结束”事件

  • 我见过龙卷风文档和示例,其中self.write方法被广泛用于在超文本标记语言上呈现一些值,其中POST请求在处理程序中运行。但是我找不到关于如何将响应返回给客户的清晰信息。 例如,我正在从我的客户端调用Tornado服务器上的POST请求。接受post请求的代码为: 有了这个,我可以找到cbtp的值,有了,我可以用HTML打印它。但是,相反,我想以JSON格式将这个值返回给客户机,比如我想知道如

  • 我正在尝试调用FlickR API,但由于response.body()返回null而遇到困难。 我不确定它是否与我的JSON/POJO映射相关,但我无法弄清楚当我调用Flickr时如何访问来自改版的响应。我知道我的调用已经成功完成,因为我实际上能够通过日志拦截器查看JSON。 型号: 活动 }