React Router BrowserRouter非根路由返回401 Unauthorized错误求助
刚学习React Router,正在将一个使用哈希路由的项目重构为使用BrowserRouter。测试时发现,只有根路由(localhost:3000/)可正常加载对应页面,在localhost:3000/后输入任意内容,无论app.jsx中是否存在对应Route,都会返回401 Unauthorized错误。
推测问题在于:index.html文件未被正确提供给浏览器,存在认证拦截阻止浏览器获取该文件。
已尝试的解决方法
- 切换为HashRouter可解决问题,但不清楚原因;
- 检查Network标签,对比之前成功项目的请求,未发现异常,附失败请求信息:
请求URL: http://localhost:3000/register
请求方法: GET
状态码: 401 Unauthorized
远程地址: 127.0.0.1:3000
Referrer Policy: strict-origin-when-cross-origin
Connection: keep-alive
content-length: 35
Content-Type: application/json; charset=utf-8
Date: Mon, 13 Mar 2023 18:16:02 GMT
ETag: W/"23-NPT3XhyBFeUKvS1KZ/jc0dymZSA"
Keep-Alive: timeout=5
X-Powered-By: Express
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Cookie: connect.sid=s%3AeT5IKOFT3GsMAeTlpNuEnbP5vy3beQXK.mucLgb13MH5y0YQRLefsHn5AT02no8BVUQukNPwrUa8
Host: localhost:3000
If-Modified-Since: Mon, 13 Mar 2023 16:23:19 GMT
If-None-Match: W/"281-186dbc88f8a"
sec-ch-ua: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Linux"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 - 移除
app.jsx中除Routes和Route外的所有代码,排除了上下文或旧用户认证的影响。
已排查一周仍未解决,寻求相关帮助。
内容的提问来源于stack exchange,提问作者Cameron Peck

