跨域场景下Auth0认证成功后前端fetch请求返回未登录问题
Auth0跨子域认证失效排查方案
- 首先修正fetch请求配置:
- 确保请求路径为完整的绝对路径,携带
https://协议头,避免被解析为前端主域下的相对路径,正确请求地址为https://api.mysite.com - 跨域(含跨子域)请求默认不会携带身份凭证Cookie,需手动添加
credentials: 'include'参数,请求示例如下:
fetch('https://api.mysite.com', { credentials: 'include' })- 若使用Axios等请求库,对应配置为
withCredentials: true
- 确保请求路径为完整的绝对路径,携带
- 检查Auth0下发Session Cookie的属性配置:
- Domain字段必须配置为
.mysite.com,而非默认的api.mysite.com,确保主域下的前端请求可以携带该Cookie - SameSite字段不能设置为
Strict,跨子域场景可设为Lax;如果存在跨站场景需设为None,必须同时开启Secure属性,且全站使用HTTPS访问 - Path字段需设置为
/,保证所有接口路径都能读取到Cookie
- Domain字段必须配置为
- 检查Express服务的CORS配置:携带身份凭证的请求不支持CORS通配符
*,需做如下配置:- 不使用
*作为Access-Control-Allow-Origin的返回值,改为动态匹配请求Origin是否属于*.mysite.com白名单,匹配成功后返回对应Origin值 - 新增响应头
Access-Control-Allow-Credentials: true
- 不使用
- 清除浏览器缓存Cookie后重试,避免旧的错误配置Cookie干扰验证。
内容的提问来源于stack exchange,提问作者DucksEatTurtles
相关产品推荐
相关产品推荐

