如何在 ajax 标头中为每个用户发送 api 令牌?
Posted
技术标签:
【中文标题】如何在 ajax 标头中为每个用户发送 api 令牌?【英文标题】:How to send api token for each user in ajax header? 【发布时间】:2019-12-05 10:19:11 【问题描述】:在 Laravel 项目中,我从数据库中获取我的 api 令牌并在本地环境的 ajax 标头中使用它。知道我想为每个用户在标头中设置 api 令牌。我该怎么做?
这是我的 ajax:
<script>
$.ajax(
url: url,
headers: "Authorization": "Bearer my_token ",
type: 'GET',
data: data,
success: function( data)
console.log(data)
);
</script>
现在我想发送每个带有标头的使用令牌,而不仅仅是一个人。
【问题讨论】:
【参考方案1】:最后,我把它放在元标记中:
<meta meta name="api_token" content=" (Auth::user()) ? Auth::user()-
>api_token : '' ">
在脚本部分:
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
'Authorization': 'Bearer ' + $('meta[name="api_token"]').attr('content'),
);
【讨论】:
【参考方案2】:我不确定您所说的 “现在我想发送每个带有标头的使用令牌,而不仅仅是一个人。” 但是,如果您指的是在每个 ajax 请求中发送令牌, 您可以通过添加下面的脚本来做到这一点,它类似于Laravel X-CSRF-TOKEN setup 这只是一次性设置。对于每个 ajax 请求,它都会自动添加令牌。
$.ajaxSetup(
headers:
'Authorization': "Bearer "+localStorage.getItem('token'),
);
【讨论】:
【参考方案3】:试试看。
$.ajax(
url: url,
headers:
'Authorization': `Bearer $token`,
,
method: 'POST',
data: YourData,
success: function(data)
console.log('succes: '+data);
);
【讨论】:
【参考方案4】:当您像这样登录或注册时将其保存在本地存储中:
localStorage.setItem('token',your_token)
当你需要发送它时,只需将这一行写成这样:
headers: "Authorization": "Bearer "+localStorage.getItem('token'),
【讨论】:
谢谢,您的解决方案有效。但我找到了另一个不需要每个 ajax 请求标头的解决方案。以上是关于如何在 ajax 标头中为每个用户发送 api 令牌?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 extjs 3.4 中为 ajax 调用处理 windows auth 握手(401)?
带有自定义标头的 Ajax 请求发送到启用 CORS 的 Web API 服务器
更改 ajax 请求的 response.statuscode 会引发错误“发送 HTTP 标头后服务器无法设置状态”