【问题标题】:How to retrieve and add xsrf cookies to a REST client call?如何检索 xsrf cookie 并将其添加到 REST 客户端调用?
【发布时间】:2019-05-08 15:33:24
【问题描述】:

我正在使用 RESTAssured 进行我的 api 测试。当我使用 Postman 测试 API 登录端点时,我得到了用于防伪的 cookie,Postman(和浏览器)在使用应用程序时每次调用都会使用这些 cookie。

要复制此行为以进行 API 测试,我可以调用进行身份验证,但 RESTAssured 不会像 Postman 那样检索服务器发送的 cookie。

如何为后续 API 调用检索 cookie?

到目前为止,我已经尝试过 Postman 和 RESTAssured,但可以灵活地使用 API 测试库。

httpReq = RestAssured.given().log().all();
httpReq.contentType(ContentType.URLENC.withCharset("UTF-8"));
httpReq.formParam("Email", email);
httpReq.formParam("Password", password);
httpReq.formParam("__RequestVerificationToken", substr);

Map<String, String> authCookies = response.getCookies();

当我调试和观看 authCookies 时,它缺少相关的防伪令牌。将 authCookies 添加到后续请求会导致 401 Bad Request。

【问题讨论】:

  • 如果我的理解不正确,请见谅,您的意思是说您在回复中找不到返回的防伪令牌?
  • 是的,作为身份验证时 Chrome 浏览器请求的一部分,cookie 存在。在邮递员中也是如此。但是,当我使用 Rest Assured 发出相同的请求并使用 Rest Easy 进行测试时,令牌不在标头或 cookie 中作为响应对象的一部分。
  • 你可以试试 Response.getDetailedCookies() 吗?
  • 好的,所以我尝试并意识到我从根本上误解了 xsrf 令牌的工作原理。我最初将它们作为 GET 调用的一部分来查找嵌入在 HTML 中的令牌。我已经能够进行身份验证(找到了 302),但是我还缺少其他一些东西可以用于后续请求。

标签: asp.net-mvc rest-assured web-api-testing x-xsrf-token


【解决方案1】:

感谢 Wilfred 对 getDetailedCookies() 方法的评论。

xsrf 令牌是在给定 __RequestVerificationToken 的情况下通过第一个响应生成的,可用于所有调用,包括对用户进行身份验证的 api 调用。

通过身份验证后,在任何地方使用包含 xsrf 和会话 cookie 的 cookie。

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 2021-02-10
    • 2020-11-15
    • 2017-12-14
    • 2013-10-01
    • 2023-03-22
    • 1970-01-01
    • 2017-05-22
    • 2021-05-04
    相关资源
    最近更新 更多