【问题标题】:Do individual cookie settings take precedence over those in the web.config?单个 cookie 设置是否优先于 web.config 中的设置?
【发布时间】:2014-05-31 12:27:54
【问题描述】:

假设我的 web.config 在适当的地方有以下内容:

<httpCookies requireSSL="true" />

默认情况下,这会将所有 httpCookies 设置为安全。如果我有以下 cookie:

var cookie = new HttpCookie("ResultsPerPage", "50");
cookie.Secure = false;
Response.Cookies.Add(cookie);
  1. 此 cookie 是否会将 Secure 设置为 True 或 False?
  2. 如果我们尝试以这种方式设置 HttpOnly,这是否也适用?
  3. 反之亦然(requireSSL = "false"cookie.Secure=true)?
  4. 上述方法适用于.NET,但您也可以在PHP 和Java 中设置cookie。如果我对 Java 和 PHP 使用可比较的方法(脚本中的 web.xml/inline 或 php.ini/),结果是否与 .NET 中的相同?

【问题讨论】:

    标签: java php .net cookies


    【解决方案1】:

    使用浏览器的开发控制台检查 HTTP 响应标头和 cookie 可以让您深入了解这一点。出于此答案的目的,我使用了 ASP.Net 和 Chrome 浏览器。回答您的问题 - 是的,个别 cookie 设置确实优先于 web.config 设置。

    像这样设置配置 -

    <httpCookies requireSSL="true" httpOnlyCookies="true"/>
    

    产生这样的响应标头 -

    还有像这样的 cookie -

    像这样在代码中为单个 cookie 设置首选项 -

    var cookie = new HttpCookie("ResultsPerPage", "50");
    cookie.Secure = false;
    cookie.HttpOnly = false;
    HttpContext.Response.Cookies.Add(cookie);
    

    会产生这样的响应头 -

    还有像这样的 cookie -

    您可以通过检查 cookie 和响应标头来验证 java 和 php 是否具有相同的行为。

    希望这会有所帮助。

    【讨论】:

    • 附带说明,我不确定 cookie 是否是存储“ResultsPerPage”等数据的最佳位置。那是因为这个信息是随每个请求发送到服务器的——实际上,服务器可能不需要这些信息。一个好的做法是在会话开始时获取“ResultsPerPage”和类似数据并将其存储在本地存储中。只是我的 2 美分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 2011-05-03
    • 2011-02-22
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多