You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何跳转至其他网站并同时发送JWT作为Bearer Token?

问题解答:跳转外部网站并携带JWT作为Bearer Token

你当前的fetch实现方式无法达成需求,核心原因是:
你用fetch发送的带Authorization头的请求,和后续window.location.href触发的页面跳转是两个完全独立的HTTP请求。跳转的请求是浏览器发起的全新导航请求,不会继承fetch请求里的任何请求头——等于白做了前面的fetch步骤,还可能额外触发CORS跨域错误(如果目标网站没配置允许你的域名跨域请求)。

可行的实现方案

根据你和目标网站的域名关系,选择以下合适的方式:

1. 同域/共享父域场景:用Cookie传递JWT

如果两个网站属于同域(比如a.example.com和b.example.com共享父域example.com),可以把JWT写入跨域Cookie,跳转后目标网站直接从Cookie读取验证。

$(document).ready(function() {
  document.getElementById('Aother-Website-Link').addEventListener('click', event => {
    event.preventDefault();
    // 根据实际域名调整Cookie参数
    document.cookie = `jwt=${jwt}; path=/; domain=.example.com; SameSite=None; Secure; HttpOnly`;
    window.location.href = 'Another-Website-Link';
  });
});

注意:SameSite=None和Secure属性需要配合HTTPS环境使用,HttpOnly能降低XSS攻击风险。

2. 跨域且无共享域场景:URL参数传递(不推荐,有安全风险)

如果只能通过URL传递,可将JWT编码后放在URL参数里,但这种方式会把敏感的JWT暴露在浏览器历史、服务器日志中,仅适用于非敏感场景:

$(document).ready(function() {
  document.getElementById('Aother-Website-Link').addEventListener('click', event => {
    event.preventDefault();
    const encodedJwt = encodeURIComponent(jwt);
    const targetUrl = `Another-Website-Link?token=${encodedJwt}`;
    window.location.href = targetUrl;
  });
});

目标网站需要从URL的token参数中提取JWT进行验证。

3. 正规跨域方案:走SSO单点登录流程

跨域场景下最安全合规的方式是采用OAuth2/OpenID Connect这类单点登录(SSO)标准流程:

  1. 你的网站先向统一认证服务器申请授权码;
  2. 跳转至目标网站时携带该授权码;
  3. 目标网站使用授权码向认证服务器换取JWT,完成身份验证。
    这种方式避免了JWT直接在前端传递的安全风险,也是企业级应用的常用方案。

内容的提问来源于stack exchange,提问作者Ramin Zahedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:25:17