admin管理员组

文章数量:1567757

以iframe标签嵌入一个现有的项目到网站中,嵌入的项目无法正常登录,直接在浏览器地址栏输入url并登录是正常的。于是开始探索...

问题分析

由于后续接口提示401,判断是登录接口鉴权失败导致的,于是观察登录接口的请求响应,发现了端倪:

翻译为大白话就是:写入Cookie失败。原因是没有显式设置cookie的samesite属性,导致被默认为Lax,又因为响应的接口属于非顶层导航的跨站请求,浏览器将其屏蔽了!

这个提示包含了两个信息:

  1. 设置cookie时有个连带的SameSite属性
  2. top-level-navigation(顶层导航)

接下来细说!

SameSite属性

该属性一般是随着Set-Cookie响应头设置的,语法为response.setHeader("Set-Cookie","CookieName=CookieValue;SameSite=propValue")表示该cookie是否可以携带在跨站请求中,可以取三个值:

  1. Strict,表示完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。
  2. Lax,大多数情况下不发送第三方

本文标签: 嵌套项目IFrame