我有一个.netcore 3.1 MVC项目,使用IdentityServer4混合流。
IdentityServer有一个ExpiresUtcset(1小时)的AuthenticationProperties,在MVC客户端上,有一个SlidingExpiration(false)和ExpireTimeSpan(15分钟)的cookie。
在MVC客户端上,有一个cookie的SlidingExpiration(false)和ExpireTimeSpan(15 minutest)。
登录应用后,应用cookie显示到期时间为1小时。如果我在应用程序中刷新或切换到其他页面,应用程序cookie的到期时间就会延长。到目前为止,这一切都在正常工作。
然而,如果我尝试在一个页面上进行ajax调用,事情就变得很棘手。如果我在页面上停留了一段时间(超过15分钟)而没有刷新,ajax调用就会以Http错误0失败。
CORS请求从原点发出路径:connectauthorize: http:/localhost:5100 但被忽略了,因为路径不属于允许的IdentityServer CORS端点。
没有为指定的请求找到CORS策略。
为了处理这个问题,在starttup.cs的ConfigureServices中为identServer添加了以下内容。
var cors = new DefaultCorsPolicyService(log)
{
AllowAll = true
};
services.AddSingleton<ICorsPolicyService>(cors);
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder.WithOrigins("http://localhost:5100")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
在configure中,增加了app.UseCors()。
但是在IdentityServer中还是出现了同样的错误信息。
有没有人遇到过类似的问题,或者知道我做错了什么?
你也可能需要在你的客户端设置中添加CORS。请看 这个. 您必须在客户端的AllowedCorsOrigins设置中添加您的URL。