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

使用fetch请求接口返回401未授权,同参数Ajax请求正常如何修复

修复方案

问题根因

你的fetch请求没有像正常运行的Ajax代码那样,携带query和apikey两个自定义鉴权头,因此触发接口401未授权错误。

代码修复

修改你代码中的getData方法,为fetch调用补充headers配置即可:

const getData = async(url) => {
  // 补充fetch的第二个配置参数,传入请求头
  const response = await fetch(url, {
    method: 'GET',
    headers: {
      query: "RecyclableGet(0)",
      apikey: sessionStorage.getItem("apikey")
    }
  });
  const json = await response.json();
  return buildTable(json);
};

额外优化建议

你当前的逻辑存在冗余请求问题:外层已经通过Ajax请求接口拿到了返回数据,不需要再嵌套调用fetch重复请求同一个接口,直接把Ajax返回的data传给buildTable方法即可,性能更高也不会重复占用接口请求资源:

// 直接在Ajax的success回调里调用buildTable,删掉嵌套的fetch相关代码即可
success:function(data,xhr,textStatus) {
  const buildTable = data => {
    const table = document.querySelector('.table tbody');
    for (let i = 0; i < data.length; i++) {
      let row = `<tr>
        <td>${data[i].RecyclableID}</td>
        <td>${data[i].Name}</td>
        <td>${data[i].RecyclableType}</td>
        </tr>`;
      table.insertAdjacentHTML('beforeEnd', row);
    }
  };
  // 直接用当前Ajax返回的data渲染表格
  buildTable(data);
  // 剩下的表格行点击逻辑保留即可
  $(document).ready(function() {
    const btns = $('.change-row');
    $("tbody").on('click', 'tr', function(e) {
      $(this).toggleClass('highlight');
      if ($('tbody tr').hasClass('highlight')) {
        btns.prop('disabled', false).removeClass('disabled dark');
      } else {
        btns.prop('disabled', true).addClass('disabled dark');
      }
    });
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:15:05