未在Edge(点网核心)上设置会话Cookie

时间:2019-02-25 22:04:05

标签: session cookies .net-core session-cookies microsoft-edge

会话cookie正在Chrome,FireFox甚至IE上设置,但不在Edge上设置

浏览器版本为Microsoft Edge 42.17134.1.0

DotNet核心版本为2.1

,并且我的startup.cs文件中使用了以下信息

 public void ConfigureServices(IServiceCollection services) {
  services.Configure < CookiePolicyOptions > (options => {
   options.CheckConsentNeeded = context => false;
   options.MinimumSameSitePolicy = SameSiteMode.None;
  });

  services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1).AddJsonOptions(options => {
   options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
  }).AddSessionStateTempDataProvider();

  services.AddDistributedMemoryCache();

  services.AddSession(o => {
   o.IdleTimeout = TimeSpan.FromMinutes(80);
   o.Cookie.HttpOnly = true;
   o.Cookie.Name = "my-session-cookie";

  });
 }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
  if (env.IsDevelopment()) {
   app.UseDeveloperExceptionPage();
  } else {
   app.UseExceptionHandler("/Error");
   app.UseHsts();
  }

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

  app.UseSpaStaticFiles();

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

  app.UseSpa(spa => {
   spa.Options.SourcePath = "ClientApp";

   if (env.IsDevelopment()) {
    spa.UseReactDevelopmentServer(npmScript: "start");
   }
  });
 }

以下是到目前为止我尝试过的一些内容:

  • 在会话选项中添加IsEssential条件
  • 删除CookiePolicyOptionsUseCookiePolicy
  • 尝试将过期日期添加到会话cookie(甚至没有启动解决方案)

2 个答案:

答案 0 :(得分:2)

Edge 上使用fetch导致set-cookie标头未在浏览器上设置Cookie

解决方案是将credentials: "same-origin"添加到fetch选项对象

没有将其添加到页眉

HERE的行情

  

默认情况下,抓取不会发送或接收任何Cookie

这意味着您已经向其添加了凭据对象,以便可以设置这些cookie

  

自2017年8月25日起。规范将默认凭据策略更改为   同一来源。

我想 Edge 尚未实现该默认设置

以下是有效的fetch

的示例
fetch(link, {
  body: JSON.stringify(myDataObject),
  method: "POST",
  credentials: "same-origin",
  headers: {
    "content-type": "application/json"
  }
});

答案 1 :(得分:0)

打开“边缘”设置,然后单击“高级设置”,在“ Cookie”部分下,选择““在Cookies下”部分”选项,然后重新测试您的应用程序。

如果仍然无法正常工作,请尝试将reset your browser配置为默认值,然后再次测试您的网站。