【问题标题】: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 是一种安全的解决方案。