首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持Hapi的CORS

支持Hapi的CORS
EN

Stack Overflow用户
提问于 2018-06-30 20:01:11
回答 1查看 2.6K关注 0票数 5

我正在使用Node和Hapi (v17)编写BE应用程序。在服务器运行时,我尝试使用POST方法调用端点,但一直收到一条错误消息:

Failed to load http://localhost:8001/login: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

我想在服务器站点上启用CORS,但对我来说什么都不起作用。

下面是我如何在服务器站点上启用CORS:

代码语言:javascript
复制
const hapi = require('hapi')

const server = hapi.server({
    port: 8001,
    host: 'localhost',
    routes: { 
        cors: true
    } 
})

我也尝试为特定路由启用cors,但这也没有效果:

代码语言:javascript
复制
server.route({
        method: 'POST',
        path: '/login',
        config: {
            cors: {
                origin: ['*'],
                additionalHeaders: ['cache-control', 'x-requested-with']
            }
        },
        handler: async (request, reply) => {
            return User.login(request, reply)
        }
    })

有人知道我应该怎么做才能启用CORS并摆脱这个问题吗?

此外,还有一个来自浏览器的网络选项卡的屏幕截图:

编辑:

我已经添加了处理OPTIONS方法的路由,现在我有了另一个问题。

Failed to load http://localhost:8001/login: Request header field access-control-allow-credentials is not allowed by Access-Control-Allow-Headers in preflight response.

以下是网络选项卡中的内容:

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 22:48:54

代码语言:javascript
复制
cors: {
            origin: [
                '*'
            ],
            headers: ["Access-Control-Allow-Headers", "Access-Control-Allow-Origin","Accept", "Authorization", "Content-Type", "If-None-Match", "Accept-language"],
            additionalHeaders: ["Access-Control-Allow-Headers: Origin, Content-Type, x-ms-request-id , Authorization"],
            credentials: true
        }

您可能还应该定义一个限定域,而不仅仅是*通配符

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51114723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档