【问题标题】:How to access cookies inside a Cypress request to a different domain?如何在赛普拉斯请求中访问不同域的 cookie?
【发布时间】: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.valuenull):

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


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2021-09-28
    • 2020-05-09
    • 2020-08-17
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多