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

本地调用外部API出现带本地地址的404错误,求解决方案

问题分析与解决办法

嘿,别担心,刚入门编程遇到这种问题太正常啦!我来帮你一步步理清问题~

为什么请求会带上本地地址127.0.0.1:5500?

这是因为你在拼接API地址时用错了字符串类型:
你现在用的是单引号'来包裹API地址,但ES6的模板字符串插值${变量名}只能在反引号`(就是键盘上数字1左边的那个键)包裹的字符串里生效。

当你用单引号时,${proxy}没有被解析成实际的代理地址https://cors-anywhere.herokuapp.com/,反而被当成了普通字符串的一部分。浏览器会把这个不完整的路径当成本地资源来请求,所以自动拼接上了你本地服务的地址127.0.0.1:5500,最终就出现了404错误。

如何解决这个问题?

只需要把定义api变量的单引号换成反引号就行,同时还可以优化一下,把固定坐标换成你获取到的用户经纬度,让请求更贴合需求:

修改后的代码片段

window.addEventListener("load", ()=> { 
  var long; 
  var lat; 
  if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(position => { 
      console.log(position); 
      long = position.coords.longitude; 
      lat = position.coords.latitude; 
      console.log(long, lat); 
      const proxy = 'https://cors-anywhere.herokuapp.com/'; 
      // 把单引号改成反引号,同时替换成动态经纬度
      const api = `${proxy}https://api.darksky.net/forecast/c8896cdad78b43417e8fb2969fbc5d21/${lat},${long}`; 
      fetch(api) 
        .then(response => response.json()) 
        .then(json => console.log(json)) 
    }); 
  } 
});

额外小提示

如果之后遇到cors-anywhere代理无法访问的情况,可以先访问该代理的官方页面申请临时访问权限,避免出现跨域请求被拦截的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:30