You need to enable JavaScript to run this app. 如何解决JavaScript调用Spotify搜索API时的CORS错误
优惠活动
大模型
产品
解决方案
定价
更多

如何解决JavaScript调用Spotify搜索API时的CORS错误

报错根因

该CORS拦截由两处代码写法错误触发,不涉及平台跨域策略本身的硬限制,修正代码即可解决:

  • 触发当前报错的核心原因:请求头格式不符合HTTP规范。Spotify API要求携带token的请求头固定为键Authorization,值为Bearer 你的有效token,当前代码将请求头的键写成了Bearer,相当于向服务器发送了一个未被服务端CORS白名单允许的自定义头,跨域预检阶段就会被直接拦截
  • 附带的参数传递错误:q、type属于接口的查询参数,不是fetch配置的合法字段,当前代码将其塞在fetch的第二个参数对象里,根本不会随请求发送出去,即使解决了CORS问题也拿不到正确的搜索结果
修正后的可运行代码
function searchApi() {
  const searchBox = window.document.getElementById("searchBox");
  const searchString = searchBox.value.trim();
  
  // 构造接口要求的查询参数
  const searchQuery = new URLSearchParams({
    q: searchString,
    type: "artist"
  });
  // 拼接带查询参数的完整请求地址
  const requestUrl = `${searchUrl}?${searchQuery.toString()}`;

  fetch(requestUrl, {
    method: "GET",
    headers: {
      // 严格按照接口规范写授权头格式
      "Authorization": `Bearer ${token}`
    }
  })
  .then(response => {
    // 加状态判断,提前抛出非200的错误,方便定位问题
    if (!response.ok) throw new Error(`请求异常,状态码${response.status}`);
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => console.error(error));
}
后续排查注意点
  • 确认使用的token未过期、是通过Spotify OAuth流程获取的具备搜索接口访问权限的有效凭证
  • 确认在Spotify开发者后台配置的允许重定向URI、允许源列表里,已经加入了本地开发的http://localhost:3000地址,源匹配不一致也会触发跨域拦截
  • 不要额外添加任何Spotify官方文档未声明支持的自定义请求头,否则会再次触发预检拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 09:06:07