如何检索xsrf cookie并将其添加到REST客户端调用?

时间:2019-05-08 15:33:24

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

我正在使用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错误请求。

1 个答案:

答案 0 :(得分:1)

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

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

通过身份验证后,请在各处使用包含xsrf和会话cookie的cookie。