[英]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.