React Native iOS不添加授权标题,在Android上工作

x759pob2  于 2022-11-25  发布在  React
关注(0)|答案(1)|浏览(113)

我遇到了一个问题,Authorization头没有被添加到iOS上的请求中,它在Android上工作。
一开始我以为是axios,http客户端,但后来我改用fetch来尝试,仍然不起作用。
在一个屏幕中有一个发送消息的处理程序:

const handleSendPress = async () => {
  await postContact(textInput);
}

和请求功能:

export const postContact = async (message: string) => {
  // await axiosInstance.post(`${API_URL}/contact`, {
  //   message,
  // });
  await fetch(`${API_URL}/contact`, {
    method: 'POST',
    body: JSON.stringify({
      message,
    }),
    headers: {
      'Content-Type': 'application/json',
      Accept: 'application/json',
      Authorization: 'Bearer [JWT TOKEN]',
    },
  });
};

其中我注解掉了axios并硬编码了Authorization头文件。
这在Android中有效,但在iOS中失败,服务器抱怨请求中没有Authorization头。
我不明白,有什么想法吗?

tpgth1q7

tpgth1q71#

原来iOS有一些保留的HTTP头,Authorization就是其中之一,https://developer.apple.com/documentation/foundation/nsurlrequest

  • 如果您为这些保留标头中的一个设置了值,系统可能会忽略您设置的值,或用自己的值覆盖它,或干脆不发送它。*

关键词是可能,这就是为什么它通常会失败,但在某些情况下通过。
可能有一些方法可以配置这个,但我最终只是将我使用的头部更改为X-Authorization

相关问题