首页 > 解决方案 > Cypress - 为所有 XHR 请求添加自定义标头

问题描述

我注意到X-CSRFToken,对于从被测应用程序触发的所有 XHR 请求,标头在测试之间被删除。我不确定是否保留此标头,因为我已经通过Cypress.Cookies.preserveOnce('sessionid', 'csrftoken')

因此,我想将自定义标头附加X-CSRFToken到应用程序的所有 XHR 请求中。这是我使用的脚本,我csrftoken从中获取 cookie 并设置为自定义标头。

cy.server({
   onAnyRequest: function(route, proxy) {
        proxy.xhr.setRequestHeader('X-CSRFToken', cy.getCookie('csrftoken'));
   }
})

在这里,我收到以下错误,

Argument of type '{ onAnyRequest: (route: any, proxy: any) => void; }' is not assignable to parameter of type 'Partial<ServerOptions>'.
  Object literal may only specify known properties, and 'onAnyRequest' does not exist in type 'Partial<ServerOptions>'.

我期待这种方法的任何可行解决方案或更好的解决方案。

标签: javascripttypescripttestingcypress

解决方案


现在cy.server已弃用,您可以cy.intercept改用:

cy.intercept('http://api.company.com/', (req) => {
  req.headers['authorization'] = `token ${token}`
})

文档中的更多信息。


推荐阅读