Nodejs Hapi - 如何启用跨源访问控制

时间:2016-06-19 06:35:23

标签: javascript node.js hapijs

我正在使用HapiJs Restful Web服务并尝试启用cors,因此即使来自不同域的任何客户端也可以使用我的服务。我在服务器连接对象中尝试了cors = true但没有工作。

3 个答案:

答案 0 :(得分:21)

你把cors=true放在哪里了?你能添加一些代码吗?

如果您不确切地知道cors = true的位置,这段代码可能对您有所帮助:

server.connection({ routes: { cors: true } })

或者尝试在路线的配置部分添加允许的角色。

server.route({
    config: {
        cors: {
            origin: ['*'],
            additionalHeaders: ['cache-control', 'x-requested-with']
        }
    },

看看这个问题:hapi.js Cors Pre-flight not returning Access-Control-Allow-Origin header

答案 1 :(得分:0)

我发现了可以在Hapi 18中使用的解决方法。请安装hapi-cors插件,设置正确的localhost端口,然后设置插件:


const start = async function () {
  try {
    await server.register({
      plugin: require('hapi-cors'),
      options: {
        origins: ['http://localhost:4200']
      }
    });
    await server.start();
    console.log('server started');
  } catch (err) {
    console.log(err);
    process.exit(1);
  }
};

start();

答案 2 :(得分:0)

@ James111的答案

即使该答案对您不起作用。检查您要发送的其他Auth标头。

在我的情况下为X_AUTH_TOKEN,因此在additionalHeaders中,您可能还想添加自定义标头。

例如

additionalHeaders: ['cache-control', 'x-requested-with', 'X_AUTH_TOKEN']