可以';使用IE11时,不要读取Javascript中的cookie

本文关键字:读取 Javascript cookie 中的 使用 IE11 可以 | 更新日期: 2024-10-20 08:12:58

我有一个angular应用程序,正在使用cookie来跟踪一些信息。我用javascript访问这个cookie,在Chrome上一切都很好,但当我运行IE11并逐步完成代码时,JS不会读取cookie。我可以在开发人员工具上看到它,而且它并没有设置为仅HTTP。我已经在IE上启用了所有cookie。

任何帮助都将不胜感激,因为我不知道为什么IE不能很好地与我的应用程序配合使用。

以下是我如何在我的控制器上设置cookie

HttpResponseMessage Response = new HttpResponseMessage();
JsonMediaTypeFormatter json = new JsonMediaTypeFormatter();
Response.Content = new ObjectContent<PvUser>(MyPOCO, json, "application/json");
var cookie = new CookieHeaderValue(cookieName, cookieValue);
cookie.Domain = Request.RequestUri.Host;
cookie.Expires = DateTimeOffset.Now.AddMinutes(20);
cookie.HttpOnly = false;
Response.Headers.AddCookies(new CookieHeaderValue[] { cookie });

这是我用来读取名为的cookie的w3schools代码

function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for (var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') c = c.substring(1);
      if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
  }
  return "";
}

可以';使用IE11时,不要读取Javascript中的cookie

在经历了很多痛苦之后,我仍然不知道为什么会发生这种情况,但发现当我使用HttpResponse而不是HttpResponseMessage时,不会发生这种问题。

HttpResponse Response =HttpContext.Current.Response;
Response.Clear();
Response.SetCookie(cookie);
Response.StatusCode = 200;// HttpStatusCode.OK;
Response.ContentType = "applicaiton/json; charset=utf-8";
Response.Write(jsonSerializer.Serialize(loggedInUser));
Response.End();