如何在nuxt

时间:2020-01-15 08:43:21

标签: javascript vue.js axios nuxt.js

我正在尝试在vue.js(使用nuxt)中为我的SPA定义一个“ Accept-Language”标头。

这是我尝试过的方法,但是不起作用。我指定使用axios module for nuxt

我创建了一个explained in the documentation插件。我将插件包含在nuxt.config.js中。

我尝试按照here的说明使用setHeader,但是它不起作用。

export default function ({ store, $axios, redirect }) {
  $axios.setBaseURL(process.env.BASE_URL);

  if (process.server) {
    return
  }

  $axios.onRequest(config => {
    const baseUrl = $axios.defaults.baseURL;

    const locale = store.getters['lang/locale'];

    if (locale) {
      $axios.setHeader('Accept-Language', locale)
    }
  });
}

但是此代码不起作用。但是,当我制作console.log时,我看到了它们,因此将其考虑在内。

2 个答案:

答案 0 :(得分:2)

使用post代替$ axios.onRequest

export default function({store, $axios, redirect}) {
        $axios.setBaseURL(process.env.BASE_URL);
        if (process.server) {
            return
        }
        $axios.interceptors.request.use((config) => {

            const baseUrl = $axios.defaults.baseURL;

            const locale = store.getters['lang/locale'];

            if (locale) {
                $axios.setHeader('Accept-Language', locale)
            }
            return config;
        });
    }

答案 1 :(得分:0)

您如何提出请求?如果要使用@ nuxtjs / axios提供的帮助程序(setHeader,setToken等),则必须始终使用其提供的请求帮助程序,它们只是以$

使用$axios.get( ... )代替$axios.$get( ... )进行放置,发布,删除...

您也可以尝试通过以下方式设置标题:

$axios.onRequest(config => {
    const baseUrl = $axios.defaults.baseURL;

    const locale = store.getters['lang/locale'];

    if (locale) {
        config.headers.common['Accept-Language'] = locale;
    }
});