Я развернул свое веб-приложение в IIS сервера, добавил правило в брандмауэр и добавил переадресацию портов на IP-адрес сервера.Теперь, просматривая приложение по внешней ссылке и после входа в систему, я перешел на страницу, которая выполняет ajax post-запрос к действию (имеет атрибут authorize) после загрузки контента.Похоже, что приложение не распознало куки и не разрешило мне доступ к действию, поэтому ajax возвращает 302 найденных и перенаправляет на страницу входа.Как я могу решить эту проблему?
Я пытался добавить ниже код
Cookie.SameSite = SameSiteMode.None
, но ничего не изменилось.Также я попытался удалить атрибут authorize, и он успешно возвращает нужные мне данные, поэтому я предполагаю, что файлы cookie не были распознаны.
ОБНОВЛЕНИЕ:
Вот мои ConfigureServices
services.ConfigureApplicationCookie(options =>
{
options.AccessDeniedPath = "/Error/Index";
options.Cookie.Name = "site";
options.ExpireTimeSpan = TimeSpan.FromDays(1);
options.LoginPath = "/account/Index";
options.LogoutPath = "/account/Index";
options.Cookie.SameSite = SameSiteMode.None;
});
services.AddCors(opt => opt.AddPolicy("Policy", builder =>
{
builder.AllowAnyHeader();
builder.AllowAnyMethod();
builder.AllowAnyOrigin();
builder.AllowCredentials();
}));
Вот метод Configure
app.UseStaticFiles();
app.UseAuthentication();
app.UseSession();
app.Use(async (context, next) => {
var myService = context.RequestServices.GetService<IUser>();
await myService.Current(context.User);
await next.Invoke();
});
app.UseCors("Policy");
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
Вот заголовки запроса запроса
Вот заголовки ответа запроса