Chr*_*dad 5 cookies session session-cookies .net-core 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");
}
});
}
Run Code Online (Sandbox Code Playgroud)
以下是我迄今为止尝试过的一些方法:
IsEssential
条件添加到会话选项CookiePolicyOptions
和UseCookiePolicy
fetch
在Edge上使用会导致set-cookie
标头未在浏览器上设置 cookie
解决方案是添加credentials: "same-origin"
到fetch
选项对象
请勿将其添加到标题中
来自这里的报价
默认情况下,fetch 不会发送或接收任何 cookie
这意味着您已向其添加凭据对象,以便它可以设置这些 cookie
自 2017 年 8 月 25 日起。规范将默认凭据策略更改为同源。
我猜Edge还没有实现那个默认值
这是一个工作示例 fetch
fetch(link, {
body: JSON.stringify(myDataObject),
method: "POST",
credentials: "same-origin",
headers: {
"content-type": "application/json"
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2052 次 |
最近记录: |