【发布时间】:2021-05-23 05:38:39
【问题描述】:
作为赛普拉斯测试的一部分,我正在尝试使用 cy.request 在不同的域中进行身份验证。身份验证请求需要包含 XSRF-TOKEN cookie 的值作为标头。这在与认证域相同的 baseURL 上很容易解决:访问域,通过cy.getCookie 读取 cookie,然后发出请求。由于 cypress 不允许在单个测试中访问多个域,因此需要不同的工作流程。
我现在的解决方案是将初始的cy.visit 替换为cy.reqeuest(这会将cookie 设置为通过查看第二个请求的请求标头进行验证)。但是,在发出第二次身份验证请求之前,我无法弄清楚如何读取此 cookie。 cy.getCookies() 为空,document.cookie 为空。 cy.request 的响应第一次只包含一个“set-cookie”标头,我不知道如何读取cy.request 的默认标头,因为cy.intercept 不适用于cy.request。
我的尝试草图(c.value 是 null):
cy.request({url: "https://notbaseurl/login"}).then(res => {
cy.getCookie("XSRF-TOKEN").then(c => {
cy.request({url: "https://notbaseurl/auth", method: "POST", headers: {"X-XSRF-TOKEN": c.value}})
})
})
【问题讨论】:
-
我认为
cy.getCookie仅从您调用cy.visit的域中获取cookie。但是,this 解决方法可能会对您有所帮助。或者,如果cy.getCookie不起作用,您可以解析 cookie 的响应标头
标签: http authentication cookies cypress x-xsrf-token