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

为何同一YouTube API请求在不同项目中会返回401错误

问题原因及修复方案

1. 解决.env读取失败(key=undefined)问题

  • 确认已安装并初始化dotenv依赖:Node.js原生不支持读取.env文件,需要先执行npm install dotenv安装依赖,再在项目入口文件最顶部添加初始化代码:
    // CommonJS 规范
    require('dotenv').config()
    // ESModule 规范
    import dotenv from 'dotenv'
    dotenv.config()
    
  • 确认.env文件存放位置:必须放在项目根目录(和package.json同级),如果放在子目录,需要在初始化时指定路径:
    dotenv.config({ path: './config/.env' })
    
  • 确认.env文件语法:变量名和值之间不要加空格、不要加多余引号,正确写法是YT_API_KEY=你的密钥值,错误写法如YT_API_KEY = "xxx"会导致读取失败。
  • 如果你是前端项目(React/Vue等):框架会过滤非指定前缀的环境变量,React环境变量需要以REACT_APP_开头,Vue需要以VUE_APP_开头,否则会被自动忽略。

2. 硬编码API Key后仍返回401的核心原因

你手动访问URL正常、但代码请求报错,本质是两次请求的上下文不一致,常见触发原因如下:

  • 多余的Authorization请求头冲突:如果你的项目里配置了全局请求拦截器,给所有请求自动加了Authorization: Bearer xxx类的认证头,Youtube API会优先校验该头的有效性,校验失败直接返回401,哪怕URL里的Key是正确的也不会生效,这是最高频的踩坑点。
  • CORS/Referer校验不匹配:从浏览器端直接发请求时,浏览器会自动带上Origin和Referer头,即使你认为API密钥没有配置访问限制,也可以重新去Google云控制台确认该密钥的「应用限制」项,是否误开了HTTP引荐来源、IP地址等限制。
  • 旧请求缓存干扰:之前携带无效Key的请求可能被HTTP客户端或者浏览器缓存,你可以给URL加个随机后缀&_t=${Date.now()}跳过缓存验证是否恢复正常。
  • 密钥存在不可见字符:硬编码或者复制密钥时可能意外带入了空格、换行等不可见字符,可以打印API_KEY.length确认长度和你实际的密钥长度一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:36:03