PowerFlex 3.x SetPasswordin REST-ohjelmointirajapinnan kutsu palauttaa 400 bad requestia

Summary: Kun Powershelliä käytetään VxFlexOS/PowerFlex REST API:n kanssa, setPassword-funktio palauttaa 400 bad requestin. Muut toiminnot toimivat kuitenkin hyvin, kuten "resetPassword". Tilanne: Määritä kirjautuneen käyttäjän salasana mukautetulla koodilla REST-ohjelmointirajapinnan setPassword-toiminnolla. VxFlexOS/PowerFlex-yhdyskäytävä palauttaa virheellisen pyynnön "400"-HTML-koodin. Mutta muut toiminnot toimivat edelleen ilman virheitä. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

Lokeissa tai komentorivillä jotain seuraavan kaltaista osoittaa, että "Etäpalvelin palautti virheen: (400) Virheellinen pyyntö):

image.png

Cause

Jotkin funktiot, joiden runkohyötykuorma on suurempi, kuten setPassword (joka vaatii oldPassword-objektin plus-arvon ja newPassword-objektin plus-arvon) edellyttävät, että otsikossa on myös sisältötyyppi application/json, jotta VxFlex REST API tulkitsee viestikutsun oikein.

Resolution

Voit ratkaista tämän ongelman antamalla sisältötyypille verkkopyynnön, esimerkiksi alla oleva PowerShellin koodi edellyttää, että "-ContentType "application/json" on lisätty Invoke-WebRequest-menetelmään, jotta viesti onnistuu:

#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

Sama voidaan tehdä Curlista tai muista ohjelmointikielistä:

curl -v -k -X POST -H "Content-Type:application/json" ...

 

Versiot, joita ongelma koskee

PowerFlex 3.x

Affected Products

PowerFlex Software

Products

PowerFlex rack, PowerFlex Appliance, PowerFlex custom node
Article Properties
Article Number: 000194607
Article Type: Solution
Last Modified: 14 Apr 2025
Version:  2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.