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

调用Indeed API获取认证token时fetch请求返回400错误排查

问题原因

你现在的代码存在3个核心问题:

  • 错误设置了mode: 'no-cors':该模式下浏览器会限制你读取响应内容,返回的opaque类型响应默认状态码为0,你无法拿到真实的接口返回结果,同时跨域请求如果没有目标服务的CORS授权,前端直接调用本身就会触发跨域拦截。
  • 请求头和请求体格式不匹配:你声明了Content-Type: application/x-www-form-urlencoded,但实际body传入的是JSON序列化后的字符串,和声明的格式完全不符,服务端无法正确解析参数,所以返回400错误。
  • 严重安全隐患:client_credentials授权模式严禁在前端调用,你将client_secret明文写在前端代码中,任何人都可以直接获取你的凭证滥用API权限。

临时测试修复方案

如果只是本地临时调试,可以修改代码如下:

fetch(`https://apis.indeed.com/oauth/v2/tokens`, {
        method: 'POST',
        headers: {
            'Accept':'application/json'
        },
        body: new URLSearchParams({
            client_id:'10efaf31aee65fb0b3dfe149c1e7c902c6c909bd02b1bec27c0a1ba1ae600bd4',
            client_secret:'Mtabdk9KbUulH9WQSvK5dvm3FTDWRflWJXjpcHiqNn4KozUBXRfBMA02MnTl01uK',
            grant_type:'client_credentials', 
            scope:'employer_access'
        })
    })
    .then(response => response.json())
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.log(error);
    })

如果调试时仍然出现跨域错误,说明Indeed的API没有开放前端跨域调用权限,这是正常现象,该接口本身就设计为服务端调用。

生产环境正确方案

所有client_credentials授权流程必须在你的后端服务中完成,前端只需要向后端请求已经生成好的access token即可,绝对不要将client_secret暴露到前端环境。

内容的提问来源于stack exchange,提问作者Piotr Ciebień

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:48:01