【问题标题】:Sharing cookies between domain and a subdomain using IIS express使用 IIS express 在域和子域之间共享 cookie
【发布时间】:2018-08-27 05:16:20
【问题描述】:

我正在尝试在两个 ASP.NET mvc 6 应用程序之间共享一个 cookie:

  • 第一个是 web api 应用程序,它应该代表主域“localhost”。

  • 第二个是一个空的mvc网站客户端应用,一个index.html通过简单的ajax调用web api。此应用代表子域“cleint.lohalhost”。

由于某种原因,我的浏览器无法在客户端应用程序上设置 cookie。详情如下:

-设置web api生成的cookie头

Set-Cookie:mytoken=mytokenvalue; domain=.localhost; path=/; samesite=lax

-Ajax 调用:

$.get({
    url: 'http://localhost:5004/api/values',
    success: function (response) { console.log(response); },
    error: function (error) { console.log(error); },
    xhrFields: {
        withCredentials: true
    },
    crossDomain: true
});

-最后,在 web api 应用程序上设置 cookie 的代码:

[HttpGet]
public IEnumerable<string> Get()
{
    Response.Cookies.Append("mytoken", "mytokenvalue", new CookieOptions() { Domain = ".localhost" });
    return new string[] { "value1", "value2" };
}

-如果相关,我会使用 chrome 浏览器。

感谢任何形式的帮助,谢谢。

【问题讨论】:

  • 我猜 Chrome 可能没有将 .localhost:5004 API cookie 传递给您的 localhost:80(可能是)MVC 应用程序,尽管不应将 AFAIK 端口号视为 cookie 域的一部分。您的 API cookie 是否存在于对您的 API 的后续请求中,即您是否验证过它实际上已被设置?
  • 非常感谢您的反馈,是的,cookie 根本没有设置,我能够找到的解决方案如下详述。它也与 Chrome 无关,因为我也设法在 Edge 浏览器上重现了该错误。

标签: c# iis asp.net-web-api cookies jwt


【解决方案1】:

事实证明,我的浏览器仍然渴望另一个 '.'在域名上,所以我最终用'myapp.dev'替换了'localhost'(在两个域名上)并且它起作用了。 同样重要的是要注意,从 api 方面,我必须发送值为 '.myapp.dev' 而不是 'client.myapp.dev' 的域名 cookie 选项

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 2013-08-31
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2021-03-23
    相关资源
    最近更新 更多