gpt4 book ai didi

javascript - Cookie 在 HttpResponseMessage 中可见,但在 Javascript 中不可见

转载 作者:行者123 更新时间:2023-11-28 12:17:07 28 4
gpt4 key购买 nike

我有一个登录服务,当我登录时,它会将用户登录信息传递到我的应用程序。这将在成功登录后调用我的应用程序的第一页。用户信息作为此请求中 cookie 的一部分传递。

我正在尝试使用以下代码从我的 Web API 请求中的请求中读取这些 cookie。

 CookieHeaderValue getAccessUserInfo = request.Headers.GetCookies("GAUSERINFO").FirstOrDefault();

if (getAccessUserInfo != null)
{
userInfo = getAccessUserInfo["GAUSERINFO"].Values.Get("corporate_id");
Logger.Info(string.Format("User Cookie {0}", userInfo));
return userInfo;
}

但是,如果我尝试从 javascript 或 Angular js 读取相同的 cookie,我将无法在集合中看到该 cookie。下面是我用来在 Angular js 中读取 cookie 的代码。

console.log($document[0].cookie);

这是我从结果中看到的cookie。我期待的 cookie 是 GAUSERINFO 以及以下 cookie。

enter image description here

有没有办法从 Angular js 读取这些 cookie,或者至少将该请求正文传递给 API,以便我可以使用 C# 代码读取 API 中的 cookie。

最佳答案

出于安全原因,JavaScript 无法访问仅限 HTTP 的 cookie。为了防止XSS attacks ,通常用户 session /登录信息应该仅是 HTTP。如果攻击者要获取用户的 session 信息,他们就可以冒充用户。如果您想向客户端公开诸如 corporate_id 这样的用户信息,它可以位于未标记为 HttpOnly 的单独 cookie 中。

来自MSDN for HttpCookie.HttpOnly :

Stolen cookies can contain sensitive information identifying the user to the site, such as the ASP.NET session ID or forms authentication ticket, and can be replayed by the attacker in order to masquerade as the user or obtain sensitive information. When an HttpOnly cookie is received by a compliant browser, it is inaccessible to client-side script.

要使用 corporate_id 客户端,请创建一个单独的 cookie,其中仅包含您需要的客户端信息,并且当您在 C# 代码中创建它时,请务必设置 HttpOnly为假。

编辑:如果您的用例是使用 Angular 的 $http 服务将 cookie 转发到您的 API,则您可以对其进行其他配置,此答案中有详细说明:https://stackoverflow.com/a/17065576/6950124

总而言之,您需要设置 $httpProvider.defaults.withCredentials = true; 并可能还配置您的 Web 服务器以发回 header Access-Control-Allow- Credentials: true 当浏览器最初请求页面时。这让浏览器知道您的 JavaScript 代码可以部分访问 HttpOnly cookie。

如果您已正确配置所有内容,则用于进行 AJAX 调用的底层浏览器代码应转发 HttpOnly cookie。

关于javascript - Cookie 在 HttpResponseMessage 中可见,但在 Javascript 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980922/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com