Apollo Server HAPI CORS预取不起作用

时间:2017-01-09 10:49:17

标签: node.js hapijs apollo-server

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

这是注册配置:

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

我在localhost上使用Postman运行的POST请求一切正常,但是当我想运行OPTIONS请求时(就像浏览器一样)我在Access上遇到了404错误-Control-Request-Method:

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

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

我尝试在寄存器选项上手动添加OPTIONS方法,没有任何影响。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案!

这很简单,我只需要补充一下:

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

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