You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在浏览器fetch API中请求以点结尾的URL路径?

如何用Fetch API发送末尾带点的路径请求

问题描述

调用await fetch("/api/users/.")时,浏览器会自动按照RFC 3986第5.2.4节的规则移除末尾的点段,实际请求路径变成<base URI>/api/users/;尝试用%2e转义点得到/api/users/%2e,浏览器解码后仍会移除点段,问题依旧。而curl可以通过--path-as-is参数实现保留末尾点,但Fetch API没有类似配置。

可行解决方案

1. 添加空查询参数

在路径末尾追加?,构造如下请求:

await fetch("/api/users/.?")

浏览器会保留路径中的.,因为查询参数的存在会阻止路径规范化时移除末尾点段。服务器收到的路径为/api/users/.?,空查询参数不会影响业务逻辑,可直接忽略。

2. 双重编码末尾的点

将.进行双重URL编码:%252e(%25是%的编码,%2e是.的编码),构造路径:

await fetch("/api/users/%252e")

浏览器会先解码一次得到/api/users/%2e,服务器解析时会将%2e转换为.,最终请求路径即为/api/users/.。

内容的提问来源于stack exchange,提问作者ckunz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:30:52