有没有办法告诉 fetch() 不要将 URL 上的百分比 2E (%2E) 解码为点 (.)?

Is there a way to tell fetch() to not decode percent 2E (%2E) to dot (.) on a URL?

提问人:Jasper Martin 提问时间:11/14/2023 更新时间:11/14/2023 访问量:23

问:

我正在尝试使用我的 URL(例如,.当我使用 时,它会将返回解码为一个点 (),并且由于我的后端对应物找不到适合请求的路由(在网络选项卡上),因此会出错。fetch()%2E/foo/bar/192%2E168%2E1%2E1.jsonfetch()%2E./foo/bar/192.168.1.1.json404

有没有人对此有解决方法?

javascript 字符编码 fetch-api urlencode

评论

2赞 ControlAltDel 11/14/2023
你试过了吗?encodeURIencodeComponentURI
0赞 Pointy 11/14/2023
那么,您是说服务器上的路由涉及一个包含“%2E”的文件名吗?如果是这样,您也必须对“%”字符进行编码。然而,这是一个奇怪的情况。
0赞 Barmar 11/14/2023
解码发生在服务器上,而不是在客户端上。fetch()
0赞 Jasper Martin 11/14/2023
@ControlAltDel是的,这就是我在编码 to 时使用的,但是在这样做时,它显示为网络选项卡而不是前者。我曾经模拟过相同的请求,如果 URL 包含 ,则工作正常,但在使用时则不在 javascript 端。.%2Efetch('/foo/bar/192%2E168%2E1%2E1.json')fetch('/foo/bar/192.168.1.1.json')cURLcURL%2Efetch()
0赞 Jasper Martin 11/14/2023
似乎解码了编码的 URL(点到 ),我不确定为什么fetch()%2E

答: 暂无答案