Tôi đang dùng .NET Core 2.1 và tôi biết rằng câu hỏi không phải là về Core. Tuy nhiên, internet đang thiếu và Google đã đưa tôi đến đây vì vậy hy vọng sẽ cứu được ai đó vài giờ.
Startup.cs
services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
builder
.WithOrigins("http://localhost:3000") // important
.AllowCredentials() // important
.AllowAnyMethod()
.AllowAnyHeader(); // obviously just for testing
}));
client.js
const resp = await fetch("https://localhost:5001/api/user", {
method: 'POST',
credentials: 'include', // important
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
Controllers/LoginController.cs
namespace WebServer.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UserController : ControllerBase
{
[HttpPost]
public IEnumerable<string> Post([FromBody]LoginForm lf)
{
string prevUsername = HttpContext.Session.GetString("username");
Console.WriteLine("Previous username: " + prevUsername);
HttpContext.Session.SetString("username", lf.username);
return new string[] { lf.username, lf.password };
}
}
}
Lưu ý rằng phiên viết và đọc hoạt động, nhưng dường như không có cookie nào được chuyển đến trình duyệt. Ít nhất tôi không thể tìm thấy tiêu đề "Set-Cookie" ở bất cứ đâu.