Jeremy
Jeremy

Reputation: 1952

How to set an header with Axios module and vuejs in nuxt

I'm trying to define an "Accept-Language" header for my SPA in vue.js (with nuxt).

Here's what I tried but it doesn't work. I specify that I use the axios module for nuxt.

I created a plugin as explained in the documentation. I included the plugin in nuxt.config.js.

I tried to use setHeader as explained here, but it doesn't work.

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)
    }
  });
}

But this code doesn't work. However, when I make console.log, I see them so it is taken into account.

Upvotes: 3

Views: 4690

Answers (2)

larrykkk
larrykkk

Reputation: 509

Use $axios.interceptors instead of $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;
        });
    }

Upvotes: 3

how are you making the request? If you want to use the helpers (setHeader, setToken, ...) provided by @nuxtjs/axios, you then must always use the request helpers provided by it, that are simply the lowercase http method names prefixed with a $

Instead of $axios.get( ... ) use $axios.$get( ... ) and so on for put, post, delete...

You can also try setting headers this way:

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

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

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

Upvotes: 1

Related Questions