【问题标题】:Get current domain name from request in Nuxt从 Nuxt 的请求中获取当前域名
【发布时间】:2019-11-13 05:27:22
【问题描述】:

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

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

我试图为此编写一个中间件,但它总是显示 localhost:3000

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

知道如何解决这个问题吗?

【问题讨论】:

    标签: apache2 nuxt.js hostname server-side-rendering


    【解决方案1】:

    如果您使用的是 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,
    };
    

    中间件/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'
        },
    }
    

    【讨论】:

      【解决方案2】:

      我可以通过这种方式在服务器上获取声明函数的域名:

      export default function (req, res, next) {
          console.log(req.headers.host)
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-02
        • 2022-12-28
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        • 2011-11-10
        相关资源
        最近更新 更多