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

使用Cypress进行API测试时GET请求遭遇406错误的解决求助

解决Cypress cy.request()调用API返回406 Not Acceptable的问题
  • 确认API支持的Accept类型
    406错误核心是服务器没法返回你指定的Accept格式。先查API文档,或者用curl/postman测试,看看服务器实际支持哪些Accept值——比如有些API要求用application/vnd.api+json,或者允许通配符*/*。可以先把Accept设为*/*试试,排查是不是格式不匹配导致的问题。

  • 检查请求头的细节
    有些服务器对请求头的拼写、大小写敏感,务必确保Authorization和Accept的写法完全正确。注意Bearer后面必须加空格,token里不能有多余的空格或换行符。

  • 补充Cypress默认缺失的请求头
    浏览器发送请求时通常会带User-Agent这类默认头,但cy.request()可能没有。尝试添加这类头信息:

    cy.request({
      method: 'GET',
      url: 'https://your-api.com/endpoint',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Accept': 'application/json',
        'User-Agent': 'Cypress/13.0.0' // 替换成你使用的Cypress版本
      }
    })
    
  • 临时关闭状态码校验(用于排查)
    如果想先看服务器返回的具体错误信息,可以在cy.request里加上failOnStatusCode: false,这样即使返回406,也能拿到响应内容:

    cy.request({
      method: 'GET',
      url: 'https://your-api.com/endpoint',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Accept': 'application/json'
      },
      failOnStatusCode: false
    }).then((response) => {
      console.log(response.body); // 打印服务器返回的错误提示,定位问题
      expect(response.status).to.eq(200);
    });
    
  • 验证token的有效性
    别默认token一定没问题,先在postman里用同一个token调用API,确认token没过期、权限足够,或者是否需要搭配其他请求头(比如部分API还要求X-API-Key)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:31:18