将表单从网站 A 发布到网站 B 时,POST 请求是否包含网站 B 的 cookie?



这基本上是一个OAuth2/OIDC (IdentityServer4)问题,当用户的浏览器加载身份服务(站点A)页面时,FORM POSTauthorization codeid_token回信赖方站点(站点B)。

信赖方站点(站点 B)接收 FORM POST 请求,但它没有之前放置在用户浏览器上的站点 B 的 Cookie,这使得验证过程失败。

我尝试设置允许跨源访问标头,但它似乎对表单发布场景(不是 ajax 调用)没有帮助。

在OAuth2/OIDC集成的常见应用程序中,我不应该期望cookie与authorization codeid_token一起回发到依赖部分站点(站点B)吗?或者更常见的描述是,当从站点 A 到站点 B 的表单发布时,我不应该期望站点 B 的任何 cookie 将成为站点 B 请求的一部分吗?

这不是 CORS,这是另一个问题,很可能与同一站点 cookie 策略有关。这是非常特定于浏览器的。

当站点 B ASP.NET 核心时,您可以设置:

services.ConfigureApplicationCookie(opts=>{opts.Cookie.SameSite = SameSiteMode.None;});
//and
app.UseCookiePolicy(new CookiePolicyOptions{MinimumSameSitePolicy = SameSiteMode.None});

(请参阅 ASP.NET 核心 github 上的较长讨论)

或者使用由身份服务器作者提供的更智能、更安全的技巧将其他站点切换到同一站点POST。

最新更新