【问题标题】:Session ID changes at every CORS POST despite credentials='include'尽管 credentials='include',但每次 CORS POST 的会话 ID 都会更改
【发布时间】:2019-06-02 07:24:09
【问题描述】:

我想通过 CORS 将我的前端网站连接到我的后端 API,该 API 使用简单的身份验证(名称和密码)来授权用户。为此,我使用 Javascripts Fetch API。即使我使用credentials = "initial",每个 fetch 调用的会话 ID 似乎也会发生变化:

function onClick() {
  const url = 'https://localhost:44394/api/account/Login/Standard/P@$$w0rd';
  fetch(url, {
    method: 'POST',
    credentials: 'include',
    mode: 'cors'
  }).then(function (response) {
      return response.text().then(function (text) {
      document.getElementById("at").innerHTML = text;
    });
  });
}

我在AspNetCore-Startup.csConfigure() 中添加了以下内容:

app.UseCors(builder=>builder.AllowAnyOrigin().AllowCredentials().AllowAnyMethod().AllowAnyHeader());

还有我的AspNetCore-Startup.csConfigureServices()

services.AddCors();

我无法使用onClick()-函数登录。当我使用 credentials: "same-origin" 而不是 include 时,我可以登录,但随后的 API 调用会更改调用的会话 ID。

如何防止 Fetch 调用更改会话 ID?

编辑: 在我的帐户控制器中,我通过HttpContext.Session 访问当前会话 ID。也许这类似于服务器会话而不是请求者会话?

【问题讨论】:

    标签: javascript c# asp.net-core cors fetch


    【解决方案1】:

    会话 Cookie 与 CORS 无关。 CORS 是关于对其他域的请求。

    会话是存储在服务器上的“一些数据”,由存储在浏览器中的 cookie 的 ID 标识。

    • 会话初始化:服务器在浏览器中设置 cookie(参见响应标头)
    • 下一个请求:浏览器将 cookie 发送到服务器(因此我们的服务器知道要使用哪些数据)

    知道了这一点,问题就很容易调试了:

    1. 您的服务器必须发送初始 cookie。响应标头中是否有 cookie?
    2. 您能在浏览器中看到 cookie 吗?
    3. 客户端是否会随所有请求发送此 cookie?

    您可以在浏览器的开发者工具 > 网络面板中看到这一点。

    也许这类似于服务器会话而不是请求者会话?

    它总是并且只有服务器会话。您的浏览器只是告诉服务器使用哪个会话(数据)。

    您的问题没有提供有关发生情况的详细信息,因此我不得不猜测:GDPR 可能会阻止 asp core 设置会话 cookie。

    文档:https://docs.microsoft.com/en-us/aspnet/core/security/gdpr?view=aspnetcore-2.2

        services.Configure<CookiePolicyOptions>(options =>
        {
            options.CheckConsentNeeded = context => false;
            ...
        });
    

    可以作为“快速而肮脏”的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多