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

Wix与SvelteKit跨域SSO请求如何携带身份提供商会话Cookie?

跨域SSO实现方案及问题排查

能不能用会话Cookie实现跨域SSO?

可以,但跨域Ajax请求(比如你用的fetch)携带Cookie有严格的浏览器安全限制,这正是你当前碰壁的原因。像Google这类SSO能跨域识别登录状态,要么是用了顶级域名共享Cookie(比如.google.com下的子域名),要么是通过重定向流程完成身份验证,而非直接发起跨域Ajax请求。

为什么你的fetch请求带不上Cookie?

即便你设置了credentials: 'include'和CORS响应头,仍可能因为以下原因失败:

  • Wix的会话Cookie大概率标记了SameSite=Strict或SameSite=Lax:
    • Strict:完全禁止跨域请求携带Cookie,只有同源请求才会发送。
    • Lax:仅允许GET方法的顶级导航请求(比如页面跳转、a标签点击)携带Cookie,Ajax请求不在此列。
  • 另外,当Access-Control-Allow-Credentials设为true时,Access-Control-Allow-Headers里的*是无效的,必须明确指定允许的请求头(不过你是GET请求,这个影响不大)。

可行的解决方法:重定向式SSO流程

你补充的思路完全正确,跨域场景下,重定向才是可靠携带会话Cookie的方式,具体流程如下:

  1. 在你的SvelteKit应用中添加SSO登录按钮,点击后跳转至Wix上的身份验证端点(即你创建的那个能返回JWT的接口)。
  2. 该端点处于Wix同源环境,能正常读取用户会话Cookie,验证身份后生成JWT。
  3. Wix端点验证通过后,重定向回你的SvelteKit应用,并将JWT通过安全的方式传递(不建议用URL参数,避免被日志记录)。
  4. 你的SvelteKit应用接收JWT后,存入本地存储或创建自身会话,完成SSO登录。

优化建议

  • 不要直接把JWT放在URL参数里,可以让Wix端点先将JWT存入后端共享存储,重定向时传递一个临时凭证,再由你的SvelteKit后端去获取JWT。
  • 确认Wix的会话Cookie是SameSite=Lax(多数平台默认配置),这样重定向时能正常携带。
  • 在SvelteKit中用服务器端路由(+server.js)处理Wix返回的凭证,避免前端直接接触敏感信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:45:32