Ambari api POST жалуется на защиту CSRF

Я пытаюсь установить свойство hbase через Ambari API, используя следующую команду

curl -u "admin:admin" -i -X POST -d '{"type": "hbase-site", "tag": "version3", "properties" : {"hbase.regionserver.global.memstore.size" : "0.6"}}' https://abct.net/api/v1/clusters/xyz/configurations

Но продолжайте получать следующую ошибку

HTTP/1.1 400 Bad Request
Content-Length: 107
Content-Type: text/plain
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Server: Microsoft-IIS/8.5
x-ms-hdi-active: 10.8.18.29
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
User: admin
X-Powered-By: ARR/3.0
Set-Cookie: AMBARISESSIONID=2e8ortl32j1p7zdjatigdgvg;Path=/;HttpOnly; path=/; secure
X-Powered-By: ASP.NET
Date: Mon, 12 Sep 2016 18:19:38 GMT

{
  "status" : 400,
  "message" : "CSRF protection is turned on. X-Requested-By HTTP header is required."
}

Чего здесь не хватает?

1 ответ

Оказывается, вы должны добавить заголовок запроса к запросу для чего-либо, кроме запроса GET.

Вы можете добавить заголовок с

curl --header "X-Requested-By: my_computer_name"

Или же

Вы можете отключить эту функцию.

У меня была такая же проблема в клиенте C# Rest. Использование ответа Брига исправило это:

        HttpClientHandler handler = new HttpClientHandler
        {
            Credentials = new System.Net.NetworkCredential("xxxx", "yyyyy"),
        };

        using (var httpClient = new HttpClient(handler))
        {
            //"X-Requested-By: my_computer_name"
            httpClient.DefaultRequestHeaders.Add("X-Requested-By","my_computer_name");
Другие вопросы по тегам