【问题标题】:Chrome34 ignores cookies with domain ".cloudapp.net"Chrome34 会忽略域为“.cloudapp.net”的 cookie
【发布时间】:2014-05-26 07:16:38
【问题描述】:

从我们在 Azure 中作为 Web 角色托管的开发/测试环境进行了大量调试后,Chrome 34 突然停止工作,我们意识到 Chrome 忽略了包含域名为“.cloudapp”的 cookie 的 set-cookie 响应。 net”(Azure 中云服务的默认公共 Microsoft 域)。我们选择这个名称的原因是能够在需要来自同一个 JavaScript 应用程序的安全请求的不同云服务之间生成 CORS 请求。这意味着从像 http://example.cloudapp.net 这样的 MVC 站点获取身份验证 cookie,并在像 http://exampleServices.cloudapp.net 这样的另一个 Web 角色中调用安全的 WebApi REST 服务(仅适用于具有相同域名的 cookie)

以下是来自生成身份验证 cookie 的云服务的身份验证响应示例:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Origin:http://example.cloudapp.net
Cache-Control:private
Content-Length:31
Content-Type:application/json; charset=utf-8
Date:Fri, 11 Apr 2014 20:21:20 GMT
Server:Microsoft-IIS/8.0
Set-Cookie:.COOKIENAME=XXXXXXXXXXXXXXXXXXXX; domain=.cloudapp.net; path=/; HttpOnly

我们面临的问题是 cookie 在 Chrome34 中以该域名丢弃,因此任何其他请求都没有经过身份验证。 我们可以购买公共域并在 azure 中设置我们的云服务,但我想知道是否有解决此问题的方法。

【问题讨论】:

  • 这感觉是个好主意 - 任何人都可以在 .cloudapp.net 上设置/读取任何 cookie - 因此,如果您尝试在该域上设置身份验证厨师,每个人都可以读取它们(或设置假的)。 (“每个人”指在 cloudapp.net 上创建站点的人)。

标签: asp.net-mvc google-chrome cookies azure-web-roles


【解决方案1】:

这可能是因为 Chrome 等浏览器使用公共后缀列表 (https://publicsuffix.org/list/effective_tld_names.dat) 来限制某些 cookie。如果 cookie 上设置的域后缀是公开共享的,则浏览器可能会阻止此类 cookie,以防止其将“未经授权”的数据发送到在同一域上运行的其他服务器。请注意,cloudapp.net 域位于公共后缀列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2018-08-10
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多