我正在尝试在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
时,我看到了它们,因此将其考虑在内。
答案 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;
}
});