从请求中获取当前域名的方法(Nuxt框架)

8

如何从服务器端的请求中获取当前域名?

我的基于Nuxt的网站可以从不同的域名访问。我想要获取用户访问网站的域名。我该怎么做?

我尝试编写一个中间件来实现这个目的,但它总是显示localhost:3000。

export default function({ store, req }) {
  if (process.server) store.commit('hostname', req.headers.host)
}

有什么办法可以解决这个问题吗?
2个回答

6
如果您正在使用Vuex,可以使用nuxtServerInit操作来访问请求头。在我的示例中,我将域存储在Vuex中,以便可以在应用程序中的任何位置访问它,因为此中间件会在所有其他中间件之前触发。 store/index.js
export const state = () => ({
    domain: '',
});

export const mutations = {
    setDomain(state, domain) {
        state.domain = domain;
    },
};

export const actions = {
    nuxtServerInit(store, context) {
        store.commit('setDomain', context.req.headers.host);
    },
};

export const getters = {
    domain: (state) => state.domain,
};

middleware/domain.js

export default function ({ route, store, redirect }) {
    console.log('hey look at that', store.getters['domain']);
}

nuxt.config.js

export default {
    ...

    router: {
        middleware: 'domain'
    },
}

1
我可以通过以下方式获取在服务器上声明函数的域名:
export default function (req, res, next) {
    console.log(req.headers.host)
}

如果您需要将数据提交到存储区,将数据保存在环境中并在客户端恢复它可能是一个解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接