放心测试-API请求401错误请求

时间:2018-10-01 16:19:39

标签: java rest api authentication csrf

我通过邮递员或Java库“ io.restassured”发送API请求时遇到问题。 当我在UI上执行相同的操作时,请求返回正确的响应,但是当我通过邮递员或java代码尝试相同的操作时,我得到:

  

401错误的请求

您的浏览器发送了无效的   请求。

Java代码

       public static void main(String[] args) {

        String requestUrl = "exampleBaseUrl/app/reports/api/rest/v1/graphs?context=shipper&reports_type=freights";

 Response response = RestAssured.given().relaxedHTTPSValidation().header("x-csrf-token", "18ea65e740eb0ddddadf0ef435d92564").
            when().
            get(requestUrl);
    }

我认为身份验证有问题,因为在开发工具中,我可以看到对CSRF_token的Get请求,它看起来像这样:

令牌的端点:

/login?get_csrf_token

对于此请求,我得到以下响应:

{"csrf_token":"18ea65e740eb0ddddadf0ef435d92564"}

我不确定如何解决此问题,我还尝试通过将get请求发送到令牌的端点/login?get_csrf_token来通过Java代码获取令牌 这会得到我的HTML响应,其中包含空的用户名和密码。

1 个答案:

答案 0 :(得分:1)

错误401 表示您的请求未被授权。

为了获得授权,通常在登录时会给您一个令牌,您必须将该令牌保存在缓存/本地内存中,并且每当与服务器通信时,都必须在请求标头中添加该令牌(用于您自己的介绍)到服务器)

在您的情况下,登录后似乎可以从/login?get_csrf_token获得令牌。请注意,您不需要登录服务的授权。

现在,从服务器获取令牌后,如何将其添加为请求标头? See REST Assured Documentation