PowerFlex 3.x La chiamata API REST "SetPassword" restituisce "400 Bad Request"
Riepilogo: Durante l'utilizzo di Powershell per interagire con l'API REST VxFlexOS/PowerFlex, la funzione "setPassword" restituisce una "400 bad request". Tuttavia, altre funzioni funzionano correttamente, ad esempio "resetPassword". Scenario: Utilizzare il codice personalizzato per impostare la password degli utenti che hanno effettuato l'accesso con la funzione "setPassword" nell'API REST. VxFlexOS/PowerFlex Gateway restituisce un codice HTML "400" di richiesta errata. Ma altre funzioni funzionano ancora senza errori. ...
Questo articolo si applica a
Questo articolo non si applica a
Questo articolo non è legato a un prodotto specifico.
Non tutte le versioni del prodotto sono identificate in questo articolo.
Sintomi
Nei log o nella riga di comando qualcosa di simile al seguente mostrerà che "Il server remoto ha restituito un errore: (400) Richiesta errata":


Causa
Alcune funzioni con payload del corpo più grandi, ad esempio "setPassword" (che richiede l'oggetto oldPassword più valore e l'oggetto più valore newPassword) richiedono che l'intestazione includa anche il tipo di contenuto "application/json" per l'API REST VxFlex per interpretare correttamente la chiamata post-chiamata.
Risoluzione
Per risolvere questo problema, fornire il tipo di contenuto con la richiesta Web, ad esempio il codice seguente in PowerShell richiede l'aggiunta di "-ContentType "application/json" al metodo Invoke-WebRequest affinché il post venga eseguito correttamente":
#format the user/pw hash in BASE64 to get it parsed by REST
$head = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("admin:Scaleio1234"))}
$head
#get token for authorization.
$r = Invoke-WebRequest -Uri https://192.168.199.76/api/login -Method Get -Headers $head -UseBasicParsing
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(":" + $r.content.replace('"','')))
$header = @{'Authorization' = "Basic $token"}
$payload2 = @{
oldPassword = 'Scaleio1234'
newPassword = 'Scaleio123'
}
$body2 = Convertto-JSON -InputObject $payload2
Invoke-WebRequest -Uri https://192.168.199.76/api/instances/User/action/setPassword -Headers $header -Method Post -ContentType "application/json" -Body $body2
La stessa cosa può essere fatta da Curl o da altri linguaggi di programmazione:
curl -v -k -X POST -H "Content-Type:application/json" ...
Versioni interessate
PowerFlex 3.x
Prodotti interessati
PowerFlex SoftwareProdotti
PowerFlex rack, PowerFlex Appliance, PowerFlex custom nodeProprietà dell'articolo
Numero articolo: 000194607
Tipo di articolo: Solution
Ultima modifica: 14 apr 2025
Versione: 2
Trova risposta alle tue domande dagli altri utenti Dell
Support Services
Verifica che il dispositivo sia coperto dai Servizi di supporto.