2014-05-20 27 views
1

假设我有我的appriopriate地方web.config中的以下内容:单个cookie设置优先于web.config中的设置吗?

<httpCookies requireSSL="true" /> 

这将所有httpCookies因为默认情况下的安全。如果我当时有以下的cookie:

var cookie = new HttpCookie("ResultsPerPage", "50"); 
cookie.Secure = false; 
Response.Cookies.Add(cookie); 
  1. 将这个cookie有安全设置为true或假?
  2. 这是否也适用,如果我们试图设置HttpOnly这种方式?
  3. 它也可以反过来工作(requireSSL = "false"cookie.Secure=true)?
  4. 上述方法适用于.NET,但您也可以在PHP和Java中设置Cookie。如果我对Java和PHP使用类似的方法(脚本中的web.xml/inline或php.ini /),那么结果是否与.NET相同?

回答

1

使用浏览器的开发控制台检查HTTP响应标头和cookie可以让您对此有所洞察。为了这个答案的目的,我使用了ASP.Net和Chrome浏览器。要回答您的问题 - 是的,单个Cookie设置优先于web.config设置。

设置配置这样的 -

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

结果在响应报头这样的 -

response header config

和Cookie这样的 -

cookies config

设置首为个人人饼干这样的代码 -

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

会导致响应头这样的 -

response header code

和饼干这样的 -

cookie code

您可以验证,如果java和php通过检查cookie和响应头文件具有相同的行为。

希望这会有所帮助。

+0

在附注中,我不确定cookie是否是存储数据(如“ResultsPerPage”)的最佳位置。这是因为这些信息会随着每个请求一起发送到服务器 - 实际上,服务器可能不需要这些信息。一个好的做法是在会话启动时获取“ResultsPerPage”和类似数据并将其存储在localstorage中。只是我的2cents。 – swazza85