在所有子域中使用相同的ss-id cookie-ServiceStack

时间:2018-07-11 22:37:21

标签: cookies servicestack

在我的Auth API中,将ss-id cookie域设置为可用于所有子域,就像在AppHost.Configure方法中一样:

 Config = new HostConfig
 {
     RestrictAllCookiesToDomain = ".mywebsite.com"
 };

我的浏览器将在我的每个子域API的每个请求中都包含此cookie,例如:user.mywebsite.com

不幸的是,我的API间歇性地以SET COOKIE个响应进行响应!

所以有时我的ss-id Cookie会得到我不想要的东西:

enter image description here

有时,登录并注销,清除mywebsite.com的cookie即可得到所需的信息,并且我的API共享相同的cookie:

enter image description here

我尝试添加:

 Config = new HostConfig
 {
     RestrictAllCookiesToDomain = ".mywebsite.com"
 };

对于其他API的AppHost.Configure,但这似乎无法解决这种情况,也似乎没有必要,因为由我的auth API成功登录响应设置的ss-id Cookie适用于所有子域(.mywebsite.com )

我怀疑尚未设置ss-id cookie的情况下将Ajax请求发送到API,这是多个Ajax请求和登录过程之间的时间问题。

我的逻辑正确吗?由于初始响应的响应标头中的ss-id SET COOKIE域是登录后的.mywebsite.com,我的其他API都不会用ss-id的新SET COOKIE进行响应?

1 个答案:

答案 0 :(得分:0)

除非您查看原始的HTTP标头以查看实际发生的情况,否则您将不会知道正在发生的情况。

可能有一个带有多个Ajax请求的竞争条件,我们最初发送这些请求时没有ss-id cookie,在这种情况下,它们可能会返回不同的ss-id cookie,在这种情况下,最后一条Set-Cookie指令将获胜并被使用前提是他们都使用相同的/路径。