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

使用Unsplash API遇跨域请求拦截,请求排查代码问题

问题分析与修复方案

你的代码里有几个关键问题,直接导致了跨域错误和功能异常:

1. API地址拼写错误

你写的API地址是https://api.unslpash.com/search/photos,这里的unslpash拼写错误,正确域名是unsplash。错误的域名会让浏览器认为是无效的跨域请求,触发你看到的拦截提示。正确地址应该是:

const url = `https://api.unsplash.com/search/photos?page=${page}&query=${inputData}&client_id=${accesKey}`;

2. 数据属性拼写错误

  • 图片地址调用错误:result.url.small应该是result.urls.small,Unsplash返回的图片链接存在于urls对象下,不是url,这个错误会导致图片无法加载。
  • 链接属性错误:imageLink.targer应该改为imageLink.target,写错属性名会导致点击链接无法在新窗口打开。
  • 变量名不规范:accesKey建议改为accessKey,虽然不影响功能,但能避免后续混淆。

3. 额外的健壮性修复建议

  • 空输入不发起请求,避免无效调用
  • 添加请求错误捕获,防止页面无响应
  • 无搜索结果时显示提示信息

修复后的完整代码:

const accessKey = "JN39ryZJTydJj6gvXs29muFzRQTYSWa-L7NhuTDK8Wo";
const formEl = document.querySelector("form");
const inputEl = document.getElementById("search-input");
const searchResults = document.querySelector(".search-results");
const showMore = document.getElementById("show-more-btn");

let inputData = "";
let page = 1;

async function searchImages() {
  inputData = inputEl.value.trim();
  if (!inputData) return; // 空输入不发起请求

  const url = `https://api.unsplash.com/search/photos?page=${page}&query=${inputData}&client_id=${accessKey}`;

  try {
    const response = await fetch(url);
    if (!response.ok) {
      throw new Error(`请求错误: ${response.status}`);
    }
    const data = await response.json();
    const results = data.results;

    if (page === 1) {
      searchResults.innerHTML = "";
    }

    if (results.length === 0) {
      searchResults.innerHTML = "<p>未找到相关图片,请尝试其他关键词</p>";
      showMore.style.display = "none";
      return;
    }

    results.map((result) => {
      const imageWrapper = document.createElement("div");
      imageWrapper.classList.add("search-result");
      const image = document.createElement("img");
      image.src = result.urls.small;
      image.alt = result.alt_description || "无描述图片";
      const imageLink = document.createElement("a");
      imageLink.href = result.links.html;
      imageLink.target = "_blank";
      imageLink.textContent = result.alt_description || "查看原图";

      imageWrapper.appendChild(image);
      imageWrapper.appendChild(imageLink);
      searchResults.appendChild(imageWrapper);
    });

    page++;
    showMore.style.display = "block";
  } catch (error) {
    console.error('图片搜索失败:', error);
    searchResults.innerHTML = "<p>图片搜索失败,请稍后重试</p>";
    showMore.style.display = "none";
  }
}

formEl.addEventListener("submit", (event) => {
  event.preventDefault();
  page = 1;
  searchImages();
});

showMore.addEventListener("click", () => {
  searchImages();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:56:14