我正在尝试一些简单的操作,即从前端发出请求并在后端获取JSON数据。我在前端使用ReactJS,在后端使用NodeJS和ExpressJS。
我对如何通过从server.js或con.now中命名服务器文件名来将JSON数据访问前端的正确方法感到困惑。
我进入控制台不是因为它拒绝将链接连接到服务器。我曾尝试将文件server.js
命名为cors.now
,以将服务器连接到前端,但是我错了。
Failed to load resource: net::ERR_CONNECTION_REFUSED
但是每次执行此操作时,都会在我的控制台中收到一条关于cors.now.sh/https://us-central1-aaronklaser-1.cloudfunctions.net/medium?username=@aaron.klaser
的错误消息
Medium.js
import React from 'react';
import PageHeader from './PageHeader';
import PageContent from './PageContent';
import axios from 'axios';
export default class Medium extends React.Component {
state = {
posts: []
}
componentDidMount() {
this.fetchPosts().then(this.setPosts)
}
fetchPosts = () => axios.get(`https://cors.now.sh/https://us-central1-aaronklaser-1.cloudfunctions.net/medium?username=@aaron.klaser`)
setPosts = response => {
this.setState({
posts: response
})
}
render() {
return (
<div>
<PageHeader/>
<PageContent>
<pre>{JSON.stringify(this.state.posts, null, 2)}</pre>
</PageContent>
</div>
)
}
}
cors.now
const express = require('express');
const app = express();
const port = process.env.PORT || 5000;
const request = require('request');
app.get("/api/medium", (req, res) => {
if(!req.query.username){
return res.status(400).send('Error: You need to include query param ?username=@yourUsername');
} else {
return request(url,(error, response, body) => {
const url = `https://medium.com/${req.query.username}/latest?format=json`;
const prefix = `])}while(1);</x>`
const strip = payload => payload.replace(prefix, ``)
res.send(JSON.parse(strip(body)));
});
}
});
app.listen(port, () => console.log(`Listening on port ${port}`));
答案 0 :(得分:0)
我看到您正在使用https://cors.now.sh网站作为反向代理。我不确定该网站目前是否正在运行?
如果您直接点击API端点(https://us-central1-aaronklaser-1.cloudfunctions.net/medium?username=@aaron.klaser)-我会看到有效的JSON响应返回到浏览器。
我认为问题在于反向代理站点当前未运行或没有响应。