我尝试在两个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浏览器是否相关。
我感谢任何帮助,谢谢。
答案 0 :(得分:0)
事实证明,我的浏览器仍然渴望另一个人。&#39;在域名上,所以我最终取代了#localhost&#39; (在两个域名上)使用&#39; myapp.dev&#39;它起作用了。 同样重要的是要注意,从api方面,我必须发送域名cookie选项,其值为&#39; .myapp.dev&#39;而不是&#39; client.myapp.dev&#39;