我正在做基于令牌的身份驗證,我必須通過 axios 發送 urlencoded 資料。用戶和密碼傳遞給 axios 函式,我根據檔案傳遞了所有引數。
import axios from 'axios'
const params = new URLSearchParams()
params.append('client_id', 'xyz-client')
params.append('secret', 'xyz')
params.append('scope', 'xyz')
params.append('grant_type', 'password')
const config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: 'Basic zyx=',
},
}
export default {
authUser(userData) {
params.append('username', userData.email)
params.append('password', userData.password)
return axios.post(
'myhttpAPI',
params,
config
)
},
}
當用戶第一次登錄時一切都很好,但是如果我注銷應用程式然后嘗試再次登錄,則發布請求失敗。我意識到,在第二次登錄請求中,由于某種原因,axios 呼叫復制了在 authUser 函式中添加的引數,所以在第一次登錄時,有效負載是這樣的:
client_id: xyz
secret: xyz
scope: xyz
grant_type: password
username: xyz
password: xyz
如果我注銷然后嘗試再次登錄(不重新加載頁面),有效負載是這樣的:
client_id: xyz
secret: xyz
scope: xyz
grant_type: password
username: xyz
password: xyz
username: xyz
password: xyz
如您所見,用戶名和密碼引數重復,因此 API 給了我這個錯誤:
{"error":"invalid_request","error_description":"Could not find agent with username [email protected],[email protected]"}
因為 axios 請求正在復制這些引數。我真的不知道這是后端錯誤還是 axios 帖子格式不正確。我還意識到,如果我重新加載頁面一切正常,那么問題是當我嘗試再次登錄而不重新加載頁面時。
uj5u.com熱心網友回復:
根據 MDN,如果您使用“設定”,它將替換任何現有的同名值。這應該可以解決您的問題,因為您似乎正在附加附加值。
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/set
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437537.html
