【发布时间】:2022-01-09 06:01:17
【问题描述】:
我的基于 ASP.NET Core 2.1 的 MVC(客户端)应用程序使用 webapi。
客户端应用程序网址: http://testdomain.com:8458/
Web API 网址: http://testdomain.com:8404/
关于设置cookie的web api action方法如下,
public async Task<IActionResult> GetOrdersAsync(string parameter)
{
HttpContext.Response.Cookies.Append(
"cookieKey",
"cookieValue",
new Microsoft.AspNetCore.Http.CookieOptions { IsEssential = true }
);
return Ok();
}
在调用 webapi 的客户端 MVC 应用程序中,在响应对象中我可以看到“set-cookie”标头的存在
[Microsoft.AspNetCore.Cors.EnableCors]
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> ShowOrdersAsync(string parameter)
{
var response = await serviceClient.GetOrdersFromBackendAsync(parameter);
return Ok(response);
}
但是响应头中的 cookie,没有被存储在浏览器的 cookie 存储中
我缺少什么?如何在客户端应用浏览器中设置从 webapi 应用接收到的 cookie?
在管道代码下方包含的 Startup.cs 上,
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
// Add framework services.
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=LandingPage}/{id?}");
});
}
【问题讨论】:
标签: asp.net-mvc cookies asp.net-core-webapi cross-domain asp.net-core-2.0