为什么 axios 返回的响应 URL 与请求 URL 不同?



我正在向我的 React Native 应用程序向本地服务的后端发出 Axios GET 请求。

响应 "config" 对象显示 "http://192.168.1.68:8080/api" 的 "baseURL" 和inventory?status=ALL&barcode=127035838" 的url"。

响应"请求"对象显示"http://192.168.1.68:8080/api/inventory?status=ALL&barcode=127035838"的"_url"。

但是!响应"响应URL"属性显示的值为"http://192.168.1.68:8080/api/inventory?status=ALL&barcode=127035838%1D"。

来自应用的请求未找到条形码,返回 204。从邮递员那里提出同样的请求,我能够找到状态为 200 的条形码。这让我相信问题不在后端。我从 Axios 切换到 fetch 并找到了相同的结果。

我猜条形码末尾附加的"%1D"是令人沮丧的原因。为什么 rsponseURL 与请求 URL 不同。为什么 axios 要添加"1%D",我怎样才能让它停止?还有别的事情发生吗?

我的解决方案:

let uriSN = serialNumber;
uriSN = encodeURIComponent(serialNumber);
uriSN = uriSN.replace('%1D', '');

对条形码进行编码,然后将其去除"1%D"可以解决问题。我不知道这是最好还是完整的解决方案。

%1D是 URL 编码的十六进制29,它是一个称为"组分隔符"的 ASCII 控制字符,因此您的序列号可能具有此字符,该字符正在通过encodeURIComponent函数相应地(通过设计)进行解析。这被称为"GIGO"(垃圾中的垃圾)。

最新更新