在 react-native 中发送请求标头/授权 axios.post

Posted

技术标签:

【中文标题】在 react-native 中发送请求标头/授权 axios.post【英文标题】:Sending request headers / authorization axios.post in react-native 【发布时间】:2020-08-16 15:50:26 【问题描述】:

我在通过我的申请授权时遇到困难。 我的 jwt 令牌

export const update_profile = (
  about,
  birthday,
  birth_location,
  residence_location,
  occupation,
  company_name,
  gender,
  marital_status,
  phone
) => 
  return dispatch => 
    dispatch(
      
        type: UPDATE_PROFILE
      
    )
    const token = AsyncStorage.getItem('@token_jwt')
    let url = "/update_profile"
    Axios.post(`$SERVER$url`, 
      headers: 
        "Authorization": `Bearer $token`
      ,
      "user": 
        "about": about,
        "birthday": birthday,
        "birth_location": birth_location,
        "residence_location": residence_location,
        "occupation": occupation,
        "company_name": company_name,
        "gender": gender,
        "marital_status": marital_status,
        "cellphone": phone
      
    )
      .then((response) => 
        updateProfileSuccess(dispatch, response)
      )
      .catch((err) => 
        updateProfileError(err, dispatch)
      )
  

这是我的代码,我总是有未经授权的返回,当用户登录时,我的令牌保存在 AsyncStorage 中。

谁能帮帮我

【问题讨论】:

【参考方案1】:

对于Axios,需要将标头作为第三个参数(而不是第二个)提供。

像这样

const headers = 
  'Content-Type': 'application/json',
  'Authorization': `Bearer $token`


const data = 
"user": 
        "about": about,
        "birthday": birthday,
        "birth_location": birth_location,
        "residence_location": residence_location,
        "occupation": occupation,
        "company_name": company_name,
        "gender": gender,
        "marital_status": marital_status,
        "cellphone": phone
      


axios.post(`$SERVER$url`, data, 
    headers: headers
  )
  .then((response) => 
    ...
  )
  .catch((error) => 
    ...
  )

或者,您可以传递一个应该是对象的参数

...
const options = 
  method: 'POST',
  headers: headers,
  data: data,
  url: `$SERVER$url`,
;
axios(options);

【讨论】:

以上是关于在 react-native 中发送请求标头/授权 axios.post的主要内容,如果未能解决你的问题,请参考以下文章

在 Ext JS Ajax 请求中发送“授权”标头,Chrome 与 Firefox

在 android 中使用 okhttp 在 webview 中的每个请求中发送授权标头

使用授权标头的react-native fetch有时会返回401

未通过 HttpClient 请求发送的授权标头

如果授权标头不存在,则无法在 Webfilter 中发送自定义正文

使用 OPTIONS 方法未使用 http 请求 Angular 6 发送授权标头