Nesta aula você irá aprender como manipular cookies em C# com WebForms, verá as diferenças entre cookies e sessions e cookie HttpOnly.
Os Cookies são armazenados no browser com opção de configurar, de que maneira as informações serão trafegas, por exemplo, por domínio ou por área, que são as páginas.
Cookies do tipo Client/Server, os dados são manipulados por javascript pois são processados no Browser, onde as informações são armazenadas no header da requisição e são enviadas para o servidor, que obtém estes dados e processa retornando para o Browser.
Cookies do tipo Server é preciso fazer um request para o servidor e então o servidor irá gravar no Header e toda a área que tiver sido configurada, vai transacionar este cookie, que não poderá ser manipulado pelo Browser.
Um exemplo de utilização de cookies do tipo client/server é quando o javascript precisar saber se o usuário está logado ou não. Caso contrário, poderá ser utilizado um cookie do tipo Server.
Os cookies do tipo Server são mais seguros, pois dificulta a manipulação dos dados pelo browser.
Então, toda vez que a técnica de cookie é utilizada, os dados são armzenados diretamente no header, que são trafegados de acordo com o domínio configurado. O cookie também possui um tempo de expiração
Definimos um cookie no C# através da classe HttpCookie e criamos um objeto de instância desta classe, passando parâmetros de nome e o valor
Com a instância da classe criada, podemos configurar atributos, como por exemplo, o domínio (Domain), tempo de Expiração (Expires ) e se será um Http Server ou Client/Server(HttpOnly).
Para adicionar o cookie, utilizamos Response.Cookies.Add
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("cnome", "123456");
cookie.Expires.Add(new TimeSpan(2,0,0));
cookie.HttpOnly = false;
Response.Cookies.Add(cookie);
}
}
Vamos verificar se o cookie foi criado com os passos a seguir:
Podemos ver que o cookie chamado cnome, foi criado com sucesso, com o valor (value) 123456.
Para carregar este cookie em outra tela, utilizamos Request.Cookies, como mostra o exemplo abaixo:
public partial class Contact : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.Cookies["cnome"].value.ToString());
}
}
Como este cookie é do tipo Client/Server, podemos obtê-lo via javascript.
$cookie('cnome', 'ldsdsds');
"cnome="ldsdsds'
$cookie('cnome');
"ldsdsds"
Vamos alterar o cookie para o tipo Server, configurando HttpOnly como true e tentar alterar o cookie através do console do browser:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("cnome", "123456");
cookie.Expires.Add(new TimeSpan(2,0,0));
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);
}
}
Note que, ao tentar obter o cookie, não será mais possivel e uma mensagem undefined é mostrada no console:
$cookie('cnome');
undefined
Quando estamos em outra página e queremos validar se um determinado cookie existe ou não, utilizamos o Request.Cookies, que retorna um objeto. Caso este objeto seja diferente de nulo, significa que o conteúdo existe:
public partial class Contact : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["cookieClient"] != null)
{
Response.Write(Request.Cookies["cookieClient"].value.ToString());
}
}
}
Para verificar o cookie no Header da requisição http:
Podemos excluir os cookies armazenados através da configuração do computador, na opção Limpar Cookies.
Nesta aula você irá aprender como manipular cookies em C# com WebForms, verá as diferenças entre cookies e sessions e cookie HttpOnly.
Os Cookies são armazenados no browser com opção de configurar, de que maneira as informações serão trafegas, por exemplo, por domínio ou por área, que são as páginas.
Cookies do tipo Client/Server, os dados são manipulados por javascript pois são processados no Browser, onde as informações são armazenadas no header da requisição e são enviadas para o servidor, que obtém estes dados e processa retornando para o Browser.
Cookies do tipo Server é preciso fazer um request para o servidor e então o servidor irá gravar no Header e toda a área que tiver sido configurada, vai transacionar este cookie, que não poderá ser manipulado pelo Browser.
Um exemplo de utilização de cookies do tipo client/server é quando o javascript precisar saber se o usuário está logado ou não. Caso contrário, poderá ser utilizado um cookie do tipo Server.
Os cookies do tipo Server são mais seguros, pois dificulta a manipulação dos dados pelo browser.
Então, toda vez que a técnica de cookie é utilizada, os dados são armzenados diretamente no header, que são trafegados de acordo com o domínio configurado. O cookie também possui um tempo de expiração
Definimos um cookie no C# através da classe HttpCookie e criamos um objeto de instância desta classe, passando parâmetros de nome e o valor
Com a instância da classe criada, podemos configurar atributos, como por exemplo, o domínio (Domain), tempo de Expiração (Expires ) e se será um Http Server ou Client/Server(HttpOnly).
Para adicionar o cookie, utilizamos Response.Cookies.Add
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("cnome", "123456");
cookie.Expires.Add(new TimeSpan(2,0,0));
cookie.HttpOnly = false;
Response.Cookies.Add(cookie);
}
}
Vamos verificar se o cookie foi criado com os passos a seguir:
Podemos ver que o cookie chamado cnome, foi criado com sucesso, com o valor (value) 123456.
Para carregar este cookie em outra tela, utilizamos Request.Cookies, como mostra o exemplo abaixo:
public partial class Contact : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.Cookies["cnome"].value.ToString());
}
}
Como este cookie é do tipo Client/Server, podemos obtê-lo via javascript.
$cookie('cnome', 'ldsdsds');
"cnome="ldsdsds'
$cookie('cnome');
"ldsdsds"
Vamos alterar o cookie para o tipo Server, configurando HttpOnly como true e tentar alterar o cookie através do console do browser:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("cnome", "123456");
cookie.Expires.Add(new TimeSpan(2,0,0));
cookie.HttpOnly = true;
Response.Cookies.Add(cookie);
}
}
Note que, ao tentar obter o cookie, não será mais possivel e uma mensagem undefined é mostrada no console:
$cookie('cnome');
undefined
Quando estamos em outra página e queremos validar se um determinado cookie existe ou não, utilizamos o Request.Cookies, que retorna um objeto. Caso este objeto seja diferente de nulo, significa que o conteúdo existe:
public partial class Contact : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["cookieClient"] != null)
{
Response.Write(Request.Cookies["cookieClient"].value.ToString());
}
}
}
Para verificar o cookie no Header da requisição http:
Podemos excluir os cookies armazenados através da configuração do computador, na opção Limpar Cookies.