Cypress发送POST请求报‘Unable to find credentials in request’认证错误
Cypress POST请求Basic Auth认证错误解决方案
你遇到的报错是后端未在请求中识别到认证凭证,Postman可正常调用说明凭证本身有效,问题出在Cypress请求的认证参数配置不符合后端要求,以下是对应解决方案:
- 显式指定Basic Auth类型
Cypress 内置的auth配置需要显式声明type: 'basic'才会生成符合规范的Basic Auth请求头,修正后的代码如下:
cy.request({ url: 'TEST ENDPOINT', method: 'POST', auth: { username: 'test@test.com', password: 'test1', type: 'basic' }, body: { "firstname": "Bruce", "lastname": "lee" } })
- 手动构造Authorization请求头
如果上述配置无效,说明后端对请求头的格式要求较为严格,可以绕过内置auth配置,手动编码生成认证头,代码如下:
// 编码用户名和密码生成Basic Auth凭证 const authCredentials = btoa('test@test.com:test1') cy.request({ url: 'TEST ENDPOINT', method: 'POST', headers: { 'Authorization': `Basic ${authCredentials}` }, body: { "firstname": "Bruce", "lastname": "lee" } })
- 处理重定向场景
如果接口存在3xx重定向逻辑,Cypress默认不会在重定向后的请求中携带认证头,可添加followRedirect: false配置关闭自动重定向,再手动处理重定向后的请求逻辑。 - 排查校验方法
打开Cypress运行器的Network面板,对比实际发出的请求头和Postman的请求头,重点检查Authorization字段的格式、值是否完全一致,可快速定位差异点。
内容的提问来源于stack exchange,提问作者06111
相关产品推荐
相关产品推荐

