如何在 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 标头后服务器无法设置状态”

Paypal REST API - 在 RedirectUrls() 中发送 GET 标头

如何在 Jquery Ajax 中向请求添加标头?

如何在 Spring Security 中为所有请求添加 jwt 身份验证标头?