【问题标题】:How to send token in every request without using cookies or service worker?如何在不使用 cookie 或 service worker 的情况下在每个请求中发送令牌?
【发布时间】:2021-01-26 11:02:08
【问题描述】:

我正在尝试使用 play framework 2.5 和 jquery 开发 Web 应用程序。我有一个用例,我不能使用 cookie 或服务工作者,但我需要在每个请求中发送令牌。我可以为每个用户会话生成一个 session_token,我可以将该 session_token 存储在本地存储中。

有没有办法拦截所有类型的请求并在请求头中附加令牌?包括打开新网页 (window.location.href) 或 ajax 请求或表单提交或任何重定向的请求。

【问题讨论】:

    标签: javascript authentication session playframework


    【解决方案1】:

    您可以像这样在请求标头中发送您的身份验证有效负载

    $.ajax({
      url: 'YOUR_ENDPOINT',
      headers: { 'x-my-custom-header': 'some value' }
    });
    

    【讨论】:

    • 感谢您的回答。为了更清楚,我编辑了我的问题。
    【解决方案2】:

    是的,试试下面的代码,它应该拦截每个请求并附加一个身份验证头。

    jQuery(document).ready(function(){
       
        $.ajaxSetup({
             beforeSend: function(xhr) {
                 xhr.setRequestHeader('Authorization', YourToken);
                 return true;
             }
         });
    }
    

    如上所述,确保代码包含在 jQuery(document).ready() 中。请让我知道这是否适合您。

    【讨论】:

      【解决方案3】:

      如果您使用的是 Javascript ES6,请检查 proxy 对象。

      将您的令牌存储在本地存储中会受到 XSS 攻击。当您的 javascript 处理此类令牌时,使用 service worker 是一种安全的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 2012-12-29
        • 1970-01-01
        • 2016-04-01
        • 2021-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多