0

尝试发出 GraphQL 请求时,出现以下错误

我在端口 3002 上运行 express 服务器。我还在 express 服务器上使用“/graphql”端点运行 express-graphql。

我正在使用 react 应用程序中的 apollo-client。

我在我的快速代码中尝试了以下内容

app.use(cors())

但是我仍然在客户端上遇到同样的错误

如何解决此 CORS 问题?

4

2 回答 2

2

在 node.js 上的 ExpressJS 应用程序中,对路由执行以下操作:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.get('/', function(req, res, next) {
  // Handle the get for this route
});

app.post('/', function(req, res, next) {
 // Handle the post for this route
});

于 2018-03-31T22:50:46.573 回答
2

Make sure app.use(cors()) comes before you use graphQL.

Express code

const express = require( `express` );
const graphqlHTTP = require( `express-graphql` );
const cors = require( `cors` );
const app = express();

app.use( cors() );
app.use(
    `/graphql`,
    graphqlHTTP( {
        schema: schema, // point to your schema 
        rootValue: rootResolver, // point to your resolver 
        graphiql: true
    } )
);

Fetch example based on GraphQL Documentation

fetch( url, {
    method : `post`,
    headers: {
        'Content-Type': `application/json`,
        'Accept'      : `application/json`
    },
    body: JSON.stringify( {
        query: `
        {
            person {
                name
            }
        }`
    } )
} )
.then( response => response.json() )
.then( response => console.log( response ) );

于 2019-01-03T18:07:30.560 回答