如何在服务端为axios做动态头?我想使城市的功能,而无需编辑nextjs文件夹结构. nextjs的Rewrities
解决了我的问题,但我不能在服务器端为axios请求函数设置header。useRouter()
钩子返回非代理路径。
// next.config.js
...
async Rewrites() {
return [
{
source: '/new-york/:path*',
destination: '/:path*',
},
]
}
...
字符串
我尝试使用axios intreception函数:
// destination _app.js
export default function AxiosInterceptors() {
...
const router = useRouter();
const asPath = router.asPath; // asPath return not non-proxied path, if i use url /new-york/blogs, here i see /blogs;
apiQr.interceptors.request.use(function (config) {
config.headers['city'] = asPath.includes('/new-york') ? '2' : '1'; // city id
return config;
}, function (error) {
return Promise.reject(error);
});
...
}
型
我还尝试从NextJS _middleware.js
设置头,但无法访问axios请求,也没有调用axios拦截器函数。我在哪里以及如何根据服务器端输入的url获得一个稳定的变量,以便我可以调整axios头?
我希望在axios拦截器示例中获得代理的url,正如我上面所展示的,但我得到了代理的路径。
1条答案
按热度按时间093gszye1#
我不知道你说的中间件中“没有访问axios请求的权限”到底是什么意思,但下面是对我有用的:
字符串
在发送axios请求时,你可以像变量一样传递自定义头:
型
这里是文档。
希望能帮上忙!