Почему Firefox, т.е. 11 и Safari тратят 2 минуты в «Получении» для перенаправления (302)? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть приложение, которое я размещаю в качестве дополнительного приложения на IIS.Startup.cs прилагается.Приложение прекрасно в Chrome и Edge.В FireFox, IE11 и Safari / iPhone перенаправление на другую страницу занимает 2 минуты.Время в инструментах developper показывает, что почти все время затрачивается на получение.

Я читал, что у Chrome были проблемы с кэшированием, но он прекрасно работает для меня.

То, что я пробовал:
-Удалено AddAutheentication
-добавлен элемент управления кэшем (в настоящее время комментируется)

Есть идеи?

Обновление, дополнительная информация: проблемный сайт находится за брандмауэром FortiWeb.Обновление 2: при установке на сервер, не расположенный за брандмауэром, сайт работает нормально во всех браузерах.Так что системный парень изучает Fortiweb.Есть идеи, в чем может быть проблема?Мы не можем быть единственными, кто управляет сайтом Core 2.2 на IIS за FoertiWeb.

namespace OVNew
{
    public class Startup
    {
        public Startup(IHostingEnvironment env)
        {
            //to add support for different environments, watch:
            //https://www.youtube.com/watch?v=nIoDpTPIle8

            var Builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();//for secret keys etc
            Configuration = Builder.Build();

            string subPath = Environment.GetEnvironmentVariable("SUB_PATH");
            //Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            //https://www.youtube.com/watch?v=nIoDpTPIle8
            services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));

            services.AddMvc()
                    .AddRazorPagesOptions(options =>
                    {
                        options.Conventions.AuthorizePage("/Survey/Index");
                        options.Conventions.AuthorizeFolder("/Survey");
                    })
                    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            //use Cookie.Path to limit cookie to specific application
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookie(options =>
                {
                    options.Cookie.SameSite = SameSiteMode.Strict;
                    options.AccessDeniedPath = "/AccessDenied";
                });

            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

            var connection = Configuration.GetConnectionString("OVContext");
            services.AddDbContext<OVContext>(options => options.UseSqlServer(connection));
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

    //           app.Use(async (c, next) =>
    //           {
    //               c.Response.Headers.Add("Cache-Control", "no-store,no-cache");
    //               c.Response.Headers.Add("Pragma", "no-cache");
    //               await next();
    //           });

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseAuthentication();
            //app.UseMvc();
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}
...