当 api 调用到达服务时,授权标头被删除

问题描述 投票:0回答:1

有从UI到Backend服务的xhr调用,

在请求中我们清楚地看到

Authorization
header 有 jwt 但是当 api 调用收到后端服务时,没有 Authorization 标头。

   const xhr = new XMLHttpRequest(); xhr.open('PUT', url, true);
 
  xhr.setRequestHeader('Authorization', `Bearer ${jwtToken}`);
  xhr.setRequestHeader(
    'Cache-Control',
    'private, no-cache, no-store, must-revalidate'
  );
  xhr.setRequestHeader('Pragma', 'no-cache');
  xhr.setRequestHeader('Expires', '0');
  xhr.send();`

在 API 中,当我们尝试验证 Authorization 标头时,它不可用。

间歇性发生。无法追根溯源

javascript node.js api xmlhttprequest authorization
1个回答
0
投票

如果“url”与提供网络应用程序的来源不同,您需要在发送前添加此代码:

xhr.withCredentials = true;

如果还是不行,那可能是服务器的问题。

如果你使用的服务器恰好是Apache:

默认情况下,它会去除 Authorization 标头,因此您必须将其添加到 .htaccess 文件中。

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
© www.soinside.com 2019 - 2024. All rights reserved.