api在浏览器中工作,但无法在javascript中获取?

时间:2018-07-10 10:35:57

标签: javascript node.js

我正在使用openweather api创建天气应用程序,但是我的提取api调用无法正常工作。我的api调用在浏览器中有效,但在我的代码中无效。

handleSubmit(){
    var city = this.state.city;
    var url = 'api.apixu.com/v1/current.json?key=67deb752d27d411a9ac101935181007&q=' + city;
    console.log(url);
    fetch(url, {
      method: 'GET',
      mode: "no-cors",
      headers: { 'Content-Type': 'application/json' }
    }).then((res) => {
      var resJson = JSON.parse(res);
      console.log(resJson);
      return resJson;
    }).then((resJson) => {

    }).catch((err) => {
      console.log("error");
    });
  }

2 个答案:

答案 0 :(得分:2)

问题1

您的URL错误。

var url = 'api.apixu.com...

您忘记了该方案(https://或该方案的开头)。

问题2

您说mode: "no-cors"的意思是

我想发出此HTTP请求,但是我不会做任何需要许可的事情,所以不要请求许可,不要做任何需要许可的事情,如果发生以下情况也不要抛出错误我没有许可

从其他来源读取数据需要获得许可。既然您说过您不想要许可,那么您就无法读取数据,并且它会以静默方式失败。

删除mode: "no-cors"。请改用mode: "cors"

答案 1 :(得分:2)

我遇到了同样的问题,唯一对我有用的是将我的请求发送到代理服务器。
此重定向也不起作用:

const baseUrl = 'https://cors-anywhere.herokuapp.com'

解决此问题很长时间后,我将响应重定向到另一个网站,终于可以工作了。

const App = () => {
  ....

  const baseUrl = 'https://thingproxy.freeboard.io/fetch/';