【发布时间】: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