【问题标题】:http get vue.js + node.js returns empty datahttp get vue.js + node.js 返回空数据
【发布时间】:2019-04-01 03:21:49
【问题描述】:

我正在用 vue + nativescript 做一个项目

当我从 vue 项目中调用 app.get 函数时,它没有被触发

这个电话:

const urlChannels = 'http://localhost:3001/sources';
  axios.get(urlChannels)
   .then(response => {
     store.commit('setTasks', {
       channels: response.data,
     });
   }) 
 }

返回 :"data":"","status":null,"statusText":"" 就像服务器关闭一样,(调用本身是有效的,它可以与其他api一起使用

但在浏览器上使用 angularjs 进行简单测试会返回所需的有效数据

这是我的节点:

app.get('/sources', function (req, res) {
  res.set({
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'GET'
});
  res.writeHead(200,{'Content-Type':'application/json'})
  let data = getNews.getSources()
  res.send(JSON.stringify(data));
  //res.json(data); also tried this same resualt
})

【问题讨论】:

  • 你为什么使用 res.end() 而不是 res.send()?
  • 另外,你确定 urlChannels 有正确的 url 吗?你能告诉我们这是如何产生的吗?
  • 在 res.end 之前我已经尝试了各种选项。重要的是要提到,来自 angularjs 中的测试请求的简单 ajax 调用确实会成功更新问题的数据
  • getNews.getSources() 返回什么?
  • 我发现了问题,这是 ios 的安全问题,他们不允许 http 调用,只允许 https(我在 ios 模拟器上运行项目)

标签: javascript node.js vue.js http-get


【解决方案1】:

res.end() 用于结束没有数据的响应(请参阅https://expressjs.com/en/api.html)。

如果要返回json,最简单的方法是使用res.json():

app.get('/sources', function (req, res) {
    res.set({
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET'
    });
    let data = getNews.getSources()
    res.json(data);
});

【讨论】:

    【解决方案2】:

    我发现了问题,这是 ios 的安全问题,他们不允许 http 调用,只允许 https(我在 ios 模拟器上运行项目)

    The resource could not be loaded because the App Transport Security policy requires the use of a secure connection

    【讨论】:

      猜你喜欢
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-18
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多