ReactJS + Apollo客户端CORS问题

在尝试将GraphQL集成到ReactJS应用程序时陷入CORS问题。

情况:

我正在尝试执行一个简单的graphql查询。不使用数据库。该程序可以正常运行,无需执行graphql。

浏览器:Google Chrome版本78.0.3904.87

计算机:MacBook Pro,2015年中

相关依赖项

  • 阿波罗升压:0.4.4
  • 阿波罗客户端:2.6.4
  • cors:2.8.5
  • 表达:4.17.0
  • graphql:14.5.8
  • 反应:16.8.6
  • 反应阿波罗:3.1.3

这是我在浏览器控制台中遇到的错误:

  

OPTIONS http://localhost:5000/graphql net :: ERR_CONNECTION_REFUSED

在此处查看存储库/目录结构:

https://github.com/curtisyungen/hh-graphql

下面是我的server.js文件:

const express = require("express");
const graphqlHTTP = require('express-graphql');
const schema = require('./src/graphql/schema');
const cors = require('cors');

const PORT = 5000;

const app = express();

app.use(cors());
app.use('/graphql',graphqlHTTP({
    schema,graphiql: true,}));

app.listen(PORT,() => {
    console.log(`Listening on port ${PORT}. Visit http://localhost:${PORT}/ in your browser.`);
});

module.exports.app = app;

以下是我在App.js文件中设置Apollo客户端的方法:

const cache = new InmemoryCache();
const link = new HttpLink({
  uri: 'http://localhost:5000/graphql'
});

const client = new ApolloClient({
  cache,link,});

以下是浏览器中“网络”标签的屏幕截图:

Screenshot of Network Tab in Browser

我在互联网上搜寻解决方案,并尝试了以下方法:

  • app.use(cors());
  • 将fetchOptions:{模式:'no-cors'}添加到Apollo Client
  • 向Chrome添加access-control-allow-origin扩展
  • 使用本地IP地址代替“ localhost”

我正在关注一个YouTube教程,该家伙通过导入cors解决了这个问题。它对他有用,但对我却不起作用...任何想法?

hcmove 回答:ReactJS + Apollo客户端CORS问题

这里的问题是,您正在从 reactjs 前端调用 API。

并且您的后端未配置为接受来自不同域调用的连接。

您需要通过将相关标头添加到您的服务器配置来在您的服务器上允许它。

或者,在您的 reactjs package.json 中添加以下行

"proxy": "http://localhost:5000",# should be the base api url path 

您可以在此处查看我写的有关该问题的文章 https://minasami.com/2021/06/10/cors-errors-fix-with-reactjs.html

本文链接:https://www.f2er.com/3162259.html

大家都在问