繁体   English   中英

Express API可在localhost上访问,但不能在Google App Engine上访问

[英]Express API accessible on localhost but not on Google App Engine

我有两个MEAN(角度4)应用程序,我想要一个从另一个API获取数据。 奇怪的是,对于一个应用程序,该网站和该API的基本URL是相同的。 这个返回数据。 另一个应用程序具有不同的基本URL,并且该应用程序不返回数据。

APP1(数据成功返回)

base url: https://de***ta.appspot.com
api url: https://de***ta.appspot.com/api/droplet/:id

因此,当我为该应用程序提供服务时,我正在寻找的小滴将以json格式返回,就像您期望使用此代码一样:

app.get('/api/droplets/:id', function(req, res) {
  Droplets.findOne({
    _id: req.params.id
      }, function(err, droplet) {
        if (err) throw err;
        res.send(droplet);
      });
  });

APP2(返回index.html)

base url: https://differenturl.appspot.com
api url: https://de***ta.appspot.com/api/droplet/:id

因此,这里的基本URL不同,而从Angular的http服务调用时,api url返回index.html。 我认为这是由于服务器中的以下代码引起的:

app.use('*', function(req, res) {
  return res.sendFile(path.join(__dirname, '/dist', 'index.html'));
});

但是我不明白的是为什么一个api调用返回索引,而另一个api激活指定的路由。

我需要知道为什么会发生这种情况,以及如何从外部基本URL访问api。

更新

如果我在本地主机上本地运行api服务器,则只需输入url( http:// localhost:8080 / api / droplet / fhkssdkajfhds ),它就会返回我想要的数据。 但是,当我在Google Cloud托管站点上键入它时,我们没有得到它。 也许这与Google云如何提供快递应用有关?

...我认为这是一个CORS problem ..可能吗? 。您可以尝试将API全部打开吗?

因此例如安装此: https : //www.npmjs.com/package/cors ,然后

var cors = require('cors')

var app = express()
app.use(cors())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM