GraphQL CORS No' Access-Control-Allow-Origin'头

时间:2018-03-21 16:59:26

标签: cors apollo-client express-graphql

尝试发出GraphQL请求时,我会收到以下error

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

我正在使用来自反应应用程序的apollo-client。

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

app.use(cors())

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

如何解决此CORS问题?

2 个答案:

答案 0 :(得分:1)

在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
});

答案 1 :(得分:0)

在使用graphQL之前,请确保app.use(cors())已出现。

快递代码

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
    } )
);

基于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 ) );