我想用 React 访问 Discourse API。
我遇到了以下错误:
localhost/:1 对 'https://community.oppkey.host/posts.json' 的 XMLHttpRequest 访问被来自源 'http://localhost:3000' 的 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' 响应头。
这是我在 Discourse 管理面板中设置的 CORS 来源。
在 Discourse 服务器上,我的 /var/discourse/containers/app.yml 文件中包含以下内容:
这是我尝试获取 Discourse API 的方式:
export const DiscoursePanel = () => {
const [ allData, updateData ] = useState([]);
useEffect(() => {
const apiEndPoint = 'https://community.oppkey.host/posts.json';
/* const apiEndPoint = 'https://jsonplaceholder.typicode.com/posts'; */
console.log("正在尝试获取 API: " + apiEndPoint);
axios
.get(apiEndPoint)
.then((res) => {
const currentData = res.data;
updateData(currentData);
console.log("已获取 API 数据");
console.log(currentData);
})
.catch((err) => console.log(err));
}, []);
如果我使用外部服务器提供的模拟数据,React 代码可以正常工作。
我不太了解 CORS 和 React 的工作原理,所以任何帮助都将不胜感激。
我目前通过自己编写的一个 API 代理服务器来实现功能,该服务器负责将来自我的 Discourse 服务器的 API 调用中继到另一个 REST API 服务器,再由该服务器与 React 连接。虽然这种方法可行,但速度较慢。我希望能够直接从 React 向 Discourse API 端点发送调用。




