Asp.net core 饼干不';t从前端发送到后端
我在Asp.net core 饼干不';t从前端发送到后端,asp.net-core,cookies,Asp.net Core,Cookies,我在http://localhost:3000和https://localhost:44378。虽然我在Chrome中看到cookie,但我在请求中没有看到cookie: set-cookie: my1=cookie.None; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=none set-cookie: my2=cookie.Lax; expires=Sun, 29 May 2022 15:28:59 GMT;
http://localhost:3000
和https://localhost:44378
。虽然我在Chrome中看到cookie,但我在请求中没有看到cookie:
set-cookie: my1=cookie.None; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=none
set-cookie: my2=cookie.Lax; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=lax
set-cookie: my3=cookie.Strict; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=strict
以下是一些请求标题:
sec-fetch-mode: cors
sec-fetch-site: cross-site
我试着自己设置cookies:
HttpContext.Response.Cookies.Append("my1", "cookie.None", new CookieOptions() {
Expires = DateTime.UtcNow.AddYears(1), SameSite = SameSiteMode.None, Secure = true,
});
HttpContext.Response.Cookies.Append("my2", "cookie.Lax", new CookieOptions() {
Expires = DateTime.UtcNow.AddYears(1), SameSite = SameSiteMode.Lax, Secure = true,
});
HttpContext.Response.Cookies.Append("my3", "cookie.Strict", new CookieOptions() {
Expires = DateTime.UtcNow.AddYears(1), SameSite = SameSiteMode.Strict, Secure = true,
});
我在Chrome中看到它们:
set-cookie: my1=cookie.None; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=none
set-cookie: my2=cookie.Lax; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=lax
set-cookie: my3=cookie.Strict; expires=Sun, 29 May 2022 15:28:59 GMT; path=/; secure; samesite=strict
但它们不会出现在上表中,也不会出现在后端
以下是我尝试阅读它们的方式:
app.Use(async (context, next) =>
{
foreach (var p in context.Request.Cookies)
{
log.Info($"{p.Key} - {p.Value}");
}
log.Info(context.Request.Path);
await next.Invoke();
});
编辑:将前端更改为我得到的https
sec-fetch-mode: cors
sec-fetch-site: same-site
但还是不行。但是,当我在同一个进程中运行前端和后端时,不需要cors,它就可以正常工作。似乎我的请求被认为是cors,所以我做了两件事:
服务中添加了.AllowCredentials()
。AddCors(…)
调用。这将在响应中添加访问控制允许凭据:true
axios
使用axios.get(…,{withCredentials:true})
将凭据包括到请求中HTTPS=true npm Start
启动前端,使它们都在HTTPS上你是怎么把饼干放在后端的?