【发布时间】:2021-08-04 22:13:35
【问题描述】:
我被困了几个小时,找不到答案。
这是一个非常简单的请求,在浏览器中运行良好(它返回一个 JSON 答案),例如: https://www.instagram.com/eurosportfr/channel/?__a=1
在开发代码中:
const express = require('express');
const axios = require('axios');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/instagram', (req, res) => {
async function getInstagramFeed() {
await axios
.get('https://www.instagram.com/eurosportfr/?__a=1')
.then((response) => {
console.log(response);
res.write(`${JSON.stringify(response.data)}`);
res.end();
})
.catch((err) => {
console.log(err.response);
res.write('<h1>ERROR GRAVE</h1>');
res.write(err.response);
res.end();
});
}
getInstagramFeed();
});
const PORT = process.env.PORT || 8000;
app.listen(PORT, () => console.log(`listening on ${PORT}`));
DEV ENV 中的结果是 JSON 数据,包含我需要的所有内容。
但在生产中,它不会返回 JSON。相反,它返回给我一个 HTML 页面...
您可以在这里尝试:(我在正文中显示结果) https://corsmiddleware.vercel.app/instagram
当我用另一个 API 客户端尝试另一个 api 请求时,它在 prod 中工作得很好,例如: https://corsmiddleware.vercel.app/test
有什么想法吗??
谢谢
【问题讨论】:
-
我认为在开发模式下,您已登录 instagram,而在 prod 环境中您则没有。您可以通过粘贴您在浏览器中提供的 url 来测试它(隐身模式)。您将获得与生产返回相同的登录页面
-
你好 Mic Fung,谢谢你的回复。即使我没有登录,即使在隐身模式下,我也尝试过,它在本地主机上工作得很好,但在生产中却没有......我注意到在本地获取 JSON 之前,它还会显示半秒钟的 html 结果。
-
我读过这个 SO stackoverflow.com/questions/62016243/… 可能与地理位置有关。对我来说,需要登录才能使您的链接正常工作。看看您是否可以将您的服务器位置更改为您所在的位置或在法国,以摆脱登录问题。
-
感谢您的回复,它帮助我理解了这个问题,我将对我的问题做出全球性的回答。
标签: express axios instagram vercel