【问题标题】:How to change the user-agent in react native fetch api如何在 react native fetch api 中更改用户代理
【发布时间】:2018-03-21 20:48:38
【问题描述】:

我尝试在 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;
  }
}

我还检查了 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)

是否可以更改在 react-native 中发送的请求的 user-agent,如果可以?

【问题讨论】:

    标签: android react-native fetch


    【解决方案1】:

    尝试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

    【讨论】:

    【解决方案2】:

    https://reactnative.dev/docs/network#configuring-nsurlsession-on-ios

    对于某些应用程序,为底层 NSURLSession 提供自定义 NSURLSessionConfiguration 可能是合适的,该 NSURLSession 用于在 iOS 上运行的 React Native 应用程序中的网络请求。例如,可能需要为来自应用程序的所有网络请求设置自定义用户代理字符串,或者为NSURLSession 提供临时的NSURLSessionConfiguration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多