赛普拉斯:将 cookie 添加到来自本地主机前端的外部 api 调用
Cypress: Add cookie to external api calls from localhost frontend
我有一个 外部 api 部署到 开发服务器 和一个 前端 应用程序 运行ning 在 localhost 上。我需要将登录时获得的 cookie 附加到我的本地主机和外部 API 域。
我可以使用 cy.getCookies({domain: null})
看到 cookie 确实存在,但是 React 应用程序中的所有外部 API 调用都是在没有 cookie 的情况下发生的。据我所知,您只能将 cookie 添加到 baseUrl 请求,但我想 运行 我针对部署的后端进行测试(因此开发人员不需要 运行ning 实例本地后端,目前工作正常,因为它们都在本地主机上)
cy.setCookies(name, value, {domain: localhost})
cy.setCookies(name, value, {domain: external_api_domain})
如果有一个从应用程序发往 back-end 的请求需要附加特定的 cookie,也许拦截可以附加它们。
这是未经测试的 & on-the-fly 代码,可能需要调整
cy.intercept('POST', my-url, (req) =>
const cookie = cy.getCookies(name).then((cookie) => {
req.headers['Cookie'] = `${cookie.name}=${cookie.value}`;
req.continue()
})
})
假设
我假设前端发起请求,后端随后将请求传递到另一台服务器,后端从前端请求获取所有信息(包括 cookie)。
调试
您可以检查后端阶段是否正在使用 cy.request()
。最终你希望 FE 去做,但如果问题出在 FE 而不是测试 cy.request()
可能会有用。
我有一个 外部 api 部署到 开发服务器 和一个 前端 应用程序 运行ning 在 localhost 上。我需要将登录时获得的 cookie 附加到我的本地主机和外部 API 域。
我可以使用 cy.getCookies({domain: null})
看到 cookie 确实存在,但是 React 应用程序中的所有外部 API 调用都是在没有 cookie 的情况下发生的。据我所知,您只能将 cookie 添加到 baseUrl 请求,但我想 运行 我针对部署的后端进行测试(因此开发人员不需要 运行ning 实例本地后端,目前工作正常,因为它们都在本地主机上)
cy.setCookies(name, value, {domain: localhost})
cy.setCookies(name, value, {domain: external_api_domain})
如果有一个从应用程序发往 back-end 的请求需要附加特定的 cookie,也许拦截可以附加它们。
这是未经测试的 & on-the-fly 代码,可能需要调整
cy.intercept('POST', my-url, (req) =>
const cookie = cy.getCookies(name).then((cookie) => {
req.headers['Cookie'] = `${cookie.name}=${cookie.value}`;
req.continue()
})
})
假设
我假设前端发起请求,后端随后将请求传递到另一台服务器,后端从前端请求获取所有信息(包括 cookie)。
调试
您可以检查后端阶段是否正在使用 cy.request()
。最终你希望 FE 去做,但如果问题出在 FE 而不是测试 cy.request()
可能会有用。