gpt4 book ai didi

graphql - 如何让 Graphql 与 CORS 一起运行

转载 作者:行者123 更新时间:2023-12-02 15:46:25 26 4
gpt4 key购买 nike

我读过几篇关于此的文章,但没有一篇对我有用。

https://github.com/graphql/express-graphql/issues/14

这是我的expressjs代码:

app.use("/graphql", function (req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://localhost:8080');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
if (req.method === 'OPTIONS') {
res.sendStatus(200);
} else {
next();
}
});


// apply graphql middleware
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: rootResolver,
graphiql: true,
}))

如果我这样做,预检 OPTIONS 会成功,但实际的 POST 请求会失败。

我正在使用此函数向本地 graphql 服务器发出请求。

function postFn(url, payload) {
return $.ajax({
method: 'POST',
url: url,
contentType: 'application/json',
xhrFields: {
withCredentials: true
},
data: payload
});
}

下面是触发POST请求的前端代码:

  let query = `
query myqury($offset: Int, $limit: Int) {
clients(limit:$limit , offset:$offset ) {
docs{
_id
full_name
}
total
limit
offset
}
}
`
var variables = {
offset: offset,
limit: limit
}
let payload = {
query: query,
variables: variables
}
return request.post(graphQlEndpoint, payload)

错误信息是:

请求的资源上不存在“Access-Control-Allow-Origin” header

最佳答案

我也遇到了和你一样的问题。在 Express 服务器上使用 graphQL。

尝试使用 express 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 ) );

关于graphql - 如何让 Graphql 与 CORS 一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44660713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com