【问题标题】:Why is axios returning a different responseURL than the request url?为什么 axios 返回的 responseURL 与请求 url 不同?
【发布时间】:2021-01-05 00:23:38
【问题描述】:

我正在从我的 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”。

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

应用程序的请求没有找到条形码,返回 204。从 Postman 发出相同的请求,我能够找到状态为 200 的条形码。这让我相信问题不在后端。我从 Axios 切换到 fetch 并发现相同的结果。

我猜条形码末尾的附加“%1D”是令人沮丧的原因。为什么 rsponseURL 与请求 url 不同。为什么 axios 会添加“1%D”,我怎样才能让它停止?还有其他事情吗?

我的解决方案:

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

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

【问题讨论】:

    标签: react-native axios


    【解决方案1】:

    %1D29 的 url 编码十六进制,它是一个称为“组分隔符”的 ASCII 控制字符,因此您的 serialNumber 可能具有通过 encodeURIComponent 函数相应地解析(通过设计)的这个字符.这被称为“GIGO”(垃圾进垃圾出)。

    【讨论】:

      猜你喜欢
      • 2021-05-31
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多