会话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
条件CookiePolicyOptions
和UseCookiePolicy
答案 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配置为默认值,然后再次测试您的网站。