【问题标题】:Make the browser open links with authorization header使浏览器打开带有授权标头的链接
【发布时间】:2021-06-06 17:26:14
【问题描述】:

我可以使用 JavaScript 使用我的令牌构建自定义请求,jQuery 示例

$.ajax({
  url: "/page",
  type: 'GET',
  headers: {"Authorization": 'Bearer ' + localStorage.getItem('token')}
});

获取/page 的页面,这可能需要进行身份验证。

但是如果我的页面中有链接怎么办

<a href="/page"></a>

用户已经通过身份验证,localStorage 中有一个令牌。

如何设置它,以便单击链接照常加载新网页,但在该请求的标头中告诉服务器 Authorization: Bearer ...,以便服务器知道该请求是真实的?

【问题讨论】:

    标签: javascript html oauth-2.0 jwt token


    【解决方案1】:

    您不能在浏览器导航中指定标题。如果您需要在用户访问页面时进行身份验证,您应该创建一个 cookie。

    Cookie 会在所有请求中发送。将您的身份验证令牌存储在那里可以满足您的需要。

    【讨论】:

    • 我读过 cookie 容易受到 XSS 和 CSRF 的攻击。为什么所有的 JWT 教程都说不要使用 Cookie?
    • 因为 JWT 旨在用于 API。前端使用其 JWT 从 API 获取数据。您仍然可以使用 cookie 并防止它们不安全。如果您需要对导航进行身份验证,那么 JWT 是不适合这项工作的工具。
    • Cookie,就像我说的。 Cookies 还是很安全的,只是很容易不小心使用它们;导致你提到的那些漏洞。
    • @theonlygusti 您只需遵循Domain ControlMark as Secured 等最佳实践即可修复这些漏洞...
    • JWT 也有漏洞。 auth0.com/blog/…
    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 2019-07-03
    • 2016-07-02
    • 2021-03-04
    • 1970-01-01
    • 2012-02-21
    • 2019-06-11
    • 1970-01-01
    相关资源
    最近更新 更多