如何在响应本机提取api时更改用户代理

ble*_*meh 6 android fetch react-native

我试图在react native fetch API中更改用户代理:

const URLENCODED_HEADER = {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
  'User-Agent': Platform.OS + "/" + DeviceInfo.getUniqueID().toString()
}

export async function doRegister(secureInfo) {
  formBody = encodeParameters(secureInfo)
  try {
    let response = await fetch(SERVER_URL+'/user/register', {
      method: "POST",
      headers: URLENCODED_HEADER,
      body: formBody,
      credentials: 'include'
    });
    let responseJson = await response.json();
    return responseJson;
  } catch(error) {
    console.error(error);
    throw error;
  }
}
Run Code Online (Sandbox Code Playgroud)

我还检查了Reactotron中的请求标题: 在此输入图像描述

它显示了我想要的正确信息.

但是,在服务器端,ua仍然是android和ios设备的默认设置:

Mozilla/5.0 (iPad; CPU OS 11_2_6 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 Mobile/15D100 Safari/604.1

okhttp/3.6.0

Dalvik/2.1.0 (Linux; U; Android 5.1.1; Coolpad 3622A Build/LMY47V)

是否可以更改user-agent在react-native中发送的for请求以及如果是这样的话?

Eri*_*gel 3

尝试Stop Remote JS Debug测试一下。

我也在处理同样的问题。这对我有用。:)

一些注意事项:

  1. 它仅适用于 React Native
  2. React Native 已经有一个默认的用户代理。就像是:<PROJECT_NAME>/<VERSION> CFNetwork/975.0.3 Darwin/17.7.0
  3. 使用远程 JS 调试时,它将使用浏览器用户代理。就像是:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36