【问题标题】:Not able to set cookie from action无法通过操作设置 cookie
【发布时间】:2014-12-25 00:17:06
【问题描述】:

我有 ASP.NET MVC 应用程序与 ASP.NET WebApi 应用程序一起托管在 localhostlocalhost/api 并且我不想设置 cookie ASP.NET WebApi 的一项操作被调用。

我试图这样设置我的 cookie:

response.Headers.AddCookies(new[]
                                        {
                                            new CookieHeaderValue("test", "asd")
                                            {
                                                Expires = DateTime.Now.AddDays(1),
                                                Domain = Request.RequestUri.Host,
                                                Path = "/",
                                                HttpOnly = false
                                            }
                                        });

我在响应标头中得到了这个:

Set-Cookie:test=asd; expires=Thu, 30 Oct 2014 09:53:35 GMT; domain=localhost; path=/

但由于某种原因,该 cookie 没有创建。

仅出于测试目的,我尝试从 ASP.NET MVC 应用程序中设置 cookie,如下所示:

HttpContext.Response.Cookies.Add(new HttpCookie("test", "asd")
            {
                Expires = DateTime.Now.AddDays(1),
                Domain = HttpContext.Request.Url.Host,
                Path = "/",
                HttpOnly = false
            });

响应头包含:

Set-Cookie:test=asd; domain=localhost; expires=Thu, 30-Oct-2014 09:56:08 GMT; path=/

但我还是看不到那个 cookie。我做错了什么,怎么可能会忽略这些标头?但是,其他 cookie 工作正常(例如 .ASPXAUTH)。

【问题讨论】:

  • “看不到那个 cookie”是什么意思?你在看哪里?
  • @SveinFidjestøl document.cookie 和 Chrome 开发工具中的“资源”选项卡
  • 你不能在本地主机上设置cookies,至少不能用Chrome。您至少需要一个由两部分组成的名称。见stackoverflow.com/questions/7346919/…
  • @SveinFidjestøl Domain = null 做了一个技巧,非常感谢。你能把它格式化为答案吗?
  • 没问题,我已经在下面输入了答案

标签: c# asp.net asp.net-mvc cookies asp.net-web-api


【解决方案1】:

您不能在 localhost 上设置 cookie,至少不能使用 Chrome。

您至少需要一个由两部分组成的名称,例如mytestsite.local,或者你需要设置

Domain = null

在 C# 代码中。

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多