当前位置: 首页 > 知识库问答 >
问题:

如何用axios发送授权报头

沈成天
2023-03-14

如何通过Axios.js发送带有令牌的身份验证头?我试过几件事都没有成功,比如:

const header = `Authorization: Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { header } });

给出以下错误:

XMLHttpRequest cannot load http://localhost:8000/accounts/user/. Request header field header is not allowed by Access-Control-Allow-Headers in preflight response.
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });

共有1个答案

宓文斌
2023-03-14

对于非简单的http请求,您的浏览器将首先发送一个“Preflight”请求(OPTIONS method request)以确定有问题的站点认为应该发送哪些安全信息(参见此处了解有关此问题的跨源策略规范)。主机可以在预飞行响应中设置的相关标头之一是access-control-allow-headers。如果您要发送的任何报头都没有在规范的白名单报头列表或服务器的飞行前响应中列出,那么浏览器将拒绝发送您的请求。

在您的示例中,您正在尝试发送authorization头,它不被认为是最安全的发送头之一。然后,浏览器发送一个预飞行请求,询问服务器是否应该发送该报头。服务器要么发送一个空的access-control-allow-headers头(这被认为意味着“不允许任何额外的头”),要么发送一个在其允许的头列表中不包括authorization的头。因此,浏览器不会发送您的请求,而是选择通过抛出错误来通知您。

任何允许您发送此请求的Javascript变通方法都应该被认为是一个bug,因为它违反了浏览器为了自身安全而试图强制执行的跨源请求策略。

tl;dr-如果您希望发送authorization头,那么您的服务器最好配置为允许发送authorization头。设置服务器,使其使用access-control-allow-headers:authorization头响应该url上的options请求。

 类似资料:
  • 我已经实现了一个使用基本身份验证(使用Spring Security性)的web服务器。 我在访问URL时禁用了默认身份验证入口点(它只返回401,而不是用www身份验证标头响应401),目的是防止浏览器显示身份验证弹出窗口。 我能够用javascript代码和命令行工具(如curl)连接到服务器,但是当我用浏览器(chrome)测试它时 <代码>curl-v-u用户:密码本地主机:8080/用户

  • 我正在用Expo CLI构建一个React原生应用程序,我正在尝试用Axios和redux Thunk获取一些用户数据到我的redux商店。

  • 我正在使用django后端和CRAO前端。我将jwt刷新令牌保存为http仅cookie: 然后,为了刷新访问令牌,我发送了一个axios请求: 但是,在这种情况下,最初保存的cookie不会由axios发送。然而,在删除httponly属性后,cookies确实会被发送,并且一切正常。

  • 1. 什么是权限网站(如何看到其它账户的报告) 权限网站:如果您接受了其他账户某一站点的网站报告授权,该站点即成为了您的权限站点。 该站点的域名和权限来源账户会在“网站列表”的“权限网站列表”中展示。 其他账户在授权时会设置您可以查看报告的范围。 当您选中权限站点查看数据的时候,如果左侧菜单栏中的某些报告是不可点击的,则证明您没有查看改分析报表的权限。 如果您有查看的需求,需要联系授权主账户的管理

  • 我尝试使用JQuery Ajax进行基本身份验证。我像这样向ajax请求添加授权标头。 然后在ASP. Net Web服务中,我尝试获取此标头。 当我打印到标题时,我看不到授权标题 缓存控制:无缓存连接:保持活动状态Pragma:无缓存接受:接受编码:gzip,deflate接受语言:tr tr,tr;q=0.9,en-US;q=0.8,en;q=0.7主机:示例。com参考:http://loc

  • 1. 什么是权限网站(如何看到其它账户的报告) 权限网站:如果您接受了其他账户某一站点的网站报告授权,该站点即成为了您的权限站点。 该站点的域名和权限来源账户会在“网站列表”的“权限网站列表”中展示。 其他账户在授权时会设置您可以查看报告的范围。 当您选中权限站点查看数据的时候,如果左侧菜单栏中的某些报告是不可点击的,则证明您没有查看改分析报表的权限。 如果您有查看的需求,需要联系授权主账户的管理