Nuxt i18n:原生Fetch请求URL被自动添加locale前缀问题求助
解决Fetch请求URL丢失域名的问题
检查URL拼接逻辑
别直接写带开头斜杠的相对路径,要确保请求URL带上完整域名。比如正确写法:const targetDomain = 'https://your-domain.com'; const locale = 'zh-CN'; fetch(`${targetDomain}/${locale}/__cache/`)要是省略域名,浏览器会基于当前页面的域名(或base标签设置的路径)解析,容易出现路径偏差。
排查页面的base标签
页面里的<base>标签会直接影响所有相对URL的解析规则。如果页面设置了<base href="/">,那所有带开头斜杠的相对路径都会从根路径开始,自然丢失域名。查看HTML源码确认是否有这个标签,不需要就删掉;需要保留的话,请求必须用完整绝对路径。测试是否有代码/插件拦截修改URL
可能是你封装的fetch工具、页面里的第三方脚本,甚至浏览器插件在偷偷改请求URL。直接在控制台跑最纯净的fetch测试:fetch('https://your-domain.com/zh-CN/__cache/')如果这个请求能正常访问目标地址,说明是你的业务代码或第三方脚本在搞鬼,逐一排查相关逻辑就行。
注意相对路径的写法细节
如果当前页面域名和目标域名一致,想用相对路径的话,别加开头的斜杠:比如当前页面在domain/{locale}/下,直接写fetch('__cache/')就会解析成domain/{locale}/__cache/;加了斜杠写fetch('/__cache/')就会跳到根路径,要是再加上base标签的影响,就会出现你遇到的/{locale}/__cache/这种情况。
内容的提问来源于stack exchange,提问作者Twist
相关产品推荐
相关产品推荐

