使用IIS express在域和子域之间共享cookie

时间:2018-03-18 15:16:02

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

我尝试在两个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 call:

$.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 app上设置cookie的代码:

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

- 我使用Chrome浏览器是否相关。

我感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

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