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

使用OpenAI API遇不安全头及429错误的解决咨询

问题描述

我正在用ChatGPT API开发简易聊天应用,源代码如下:

import { Configuration, OpenAIApi } from "openai";

const openai = new OpenAIApi(
  new Configuration({
    apiKey: process.env.REACT_APP_OPEN_AI_SECRET_KEY,
  })
);

export const getChatGPTMessage = async (text: string): Promise<string> => {
  return await openai
    .createChatCompletion({
      model: "gpt-3.5-turbo",
      messages: [
        {
          role: "user",
          content: `${text}`,
        },
      ],
    })
    .then((res) => res.data.choices[0].message as unknown as string);
};

运行时遇到两个错误:

  1. xhr.js:162 Refused to set unsafe header "User-Agent"
  2. Failed to load resource: the server responded with a status of 429 (),提示API密钥有问题,但已确认密钥设置正确。同时想确认API KEY和“密钥”是否为同一事物,若不同该如何获取正确密钥。

解决方案

1. 解决"Refused to set unsafe header 'User-Agent'"错误

这个错误是因为OpenAI的JS库在浏览器环境中尝试修改User-Agent请求头,但浏览器将这个头列为不安全头,禁止前端脚本修改。有两种解决方式:

方式一:升级openai库到最新版本

OpenAI官方已经修复了浏览器环境下的这个问题,执行升级命令即可:

npm update openai
# 或 yarn upgrade openai

方式二:自定义Axios实例禁用User-Agent头

如果暂时无法升级库,可以创建自定义Axios实例,删除默认的User-Agent头后传入OpenAI的配置:

import axios from 'axios';
import { Configuration, OpenAIApi } from "openai";

// 创建自定义Axios实例并移除User-Agent头
const customAxios = axios.create();
delete customAxios.defaults.headers.common['User-Agent'];

const openai = new OpenAIApi(
  new Configuration({
    apiKey: process.env.REACT_APP_OPEN_AI_SECRET_KEY,
    axiosInstance: customAxios
  })
);

2. 解决429错误及API密钥相关疑问

  • API KEY和你提到的"密钥"是同一事物,指的是从OpenAI平台生成的Secret Key。

429错误通常不是密钥本身错误,而是以下原因导致:

  • 速率限制触发:OpenAI API对请求频率有严格限制(免费用户和付费用户额度不同),短时间内请求过多会触发429。
  • 额度耗尽:免费额度用完或付费账户的余额不足。
  • 密钥权限问题:密钥被禁用,或没有权限调用gpt-3.5-turbo模型。
  • 前端暴露密钥风险:直接在前端代码中使用API密钥会导致密钥泄露,可能被他人滥用,进而触发平台的限制。

解决步骤:

  1. 登录OpenAI账户,查看API使用面板,确认是否超出速率限制或额度耗尽。
  2. 确认密钥是从OpenAI平台的「API Keys」页面生成的Secret key(注意不是Organization ID),且密钥状态为启用。
  3. 绝对不要在前端代码中直接暴露API密钥!建议将API调用逻辑放在后端服务中,前端通过调用自己的后端接口来完成对话请求,这样既避免密钥泄露,也能更好地控制请求频率。
  4. 如果是速率限制导致,可以在后端添加请求重试逻辑,或降低前端的请求频率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:05:28