1

graphql-server-hapi我必须使用的模块存在很大问题。一切正常,直到我必须从带有 CORS 的浏览器请求我的 API。

这是寄存器配置:

register : GraphQLServer.graphqlHapi,
options : {
    path : '/graphql',
    graphqlOptions : {
        schema : Schema,
        graphiql : true
    },
    route : {
        cors : true
    }
}

我在本地主机上使用 Postman 运行的请求一切都很好POST,但是当我想运行一个OPTIONS请求时(就像浏览器一样),我得到一个 404 并在 Access-Control-Request-Method 上出现错误:

{
    "statusCode": 404,
    "error": "Not Found",
    "message": "CORS error: Missing Access-Control-Request-Method header"
}

我到处搜索,但似乎没有人在我之前遇到过这个问题(?!)。官方文档说这cors : true足以启用CORS ...

我尝试OPTIONS在注册选项上手动添加方法,没有任何效果。

谢谢你的帮助 !

4

1 回答 1

2

我终于找到了解决方案!

这很简单,我只需要添加这个:

server.route({
    method : 'OPTIONS',
    path : '/graphql',
    handler : (request, reply) => {
        reply({ ok : true })
            .header('Access-Control-Allow-Methods', 'POST')
    }
})

通过添加手动OPTIONS管理,它发送一个 200 并且浏览器可以发送 POST 请求:)

于 2017-01-12T16:17:28.717 回答