HTTP Cookies
Os cookies HTTP fornecem ao servidor um mecanismo para armazenar e recuperar informações de estado no sistema do aplicativo cliente. Esse mecanismo permite que aplicativos baseados na Web armazenem informações sobre itens selecionados, preferências do usuário, informações de registro e outras informações que podem ser recuperadas posteriormente.
Cookie-Related cabeçalhos
Existem dois cabeçalhos, Set-Cookie e Cookie, que estão relacionados com cookies. O cabeçalho Set-Cookie é enviado pelo servidor em resposta a uma solicitação HTTP, que é usada para criar um cookie no sistema do usuário. O cabeçalho Cookie é incluído pelo aplicativo cliente com uma solicitação HTTP enviada a um servidor, se houver um cookie que tenha um domínio e um caminho correspondentes.
Set-Cookie Cabeçalho
O cabeçalho de resposta Set-Cookie usa o seguinte formato:
Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]
Uma ou mais sequências de cadeia de caracteres (separadas por ponto-e-vírgula) que seguem o padrão nome=valor devem ser incluídas no cabeçalho de resposta Set-Cookie. O servidor pode usar essas sequências de cadeia de caracteres para armazenar dados no sistema do cliente.
A data de expiração é definida usando o formato expira =data, onde data é a data de expiração em Greenwich Mean Time (GMT). Se a data de expiração não estiver definida, o cookie expira após o término da sessão da Internet. Caso contrário, o cookie persistirá no cache até a data de expiração. A data deve usar o seguinte formato:
DIA, DD-MMM-AAAAHH:MM:SS GMT
-
DIA
-
O dia da semana (Dom, Seg, Ter, Qua, Qui, Sex, Sáb).
-
DD
-
O dia do mês (como 01 para o primeiro dia do mês).
-
MMM
-
A abreviatura de três letras para o mês (jan, fev, Mar, abr, May, jun, jul, ago, set, out, nov, dez).
-
AAAA
-
O ano.
-
HH
-
O valor da hora no tempo militar (22 seria 22h00, por exemplo).
-
MM
-
O valor do minuto.
-
SS
-
O segundo valor.
Especificar o nome de domínio, usando o padrão domain=domain_name, é opcional para cookies persistentes e é usado para indicar o fim do domínio para o qual o cookie é válido. Os cookies de sessão que especificam um domínio são rejeitados. Se a terminação do nome de domínio especificado corresponder à solicitação, o cookie tentará corresponder ao caminho para determinar se o cookie deve ser enviado. Por exemplo, se a terminação do nome de domínio for .microsoft.com, as solicitações para home.microsoft.com e support.microsoft.com serão verificadas para ver se o padrão especificado corresponde à solicitação. O nome de domínio deve ter pelo menos dois ou três períodos para impedir que os cookies sejam definidos para terminações de nomes de domínio amplamente utilizados, como .com, .edu e co.jp. Os nomes de domínio permitidos seriam semelhantes a .microsoft.com, .someschool.edu e .someserver.co.jp. Somente hosts dentro do domínio especificado podem definir um cookie para um domínio.
Definir o caminho, usando o padrão path=some_path, é opcional e pode ser usado para especificar um subconjunto das URLs para as quais o cookie é válido. Se um caminho for especificado, o cookie será considerado válido para quaisquer solicitações que correspondam a esse caminho. Por exemplo, se o caminho especificado for /example, as solicitações com os caminhos /examplecode e /example/code.htm corresponderão. Se nenhum caminho for especificado, o caminho será assumido como o caminho do recurso associado ao cabeçalho Set-Cookie.
O cookie também pode ser marcado como seguro, o que especifica que o cookie pode ser enviado apenas para servidores https.
Finalmente, um cookie pode ser marcado como HttpOnly (os atributos não diferenciam maiúsculas de minúsculas), para indicar que o cookie não é programável e não deve ser revelado ao aplicativo cliente, por razões de segurança. Na Internet do Windows, isso significa que o cookie não pode ser recuperado através da função InternetGetCookie.
Cabeçalho do cookie
O cabeçalho Cookie está incluído em todas as solicitações HTTP que tenham um cookie cujo domínio e caminho correspondam à solicitação. O cabeçalho do cookie tem o seguinte formato:
Cookie: <name>=<value> [;<name>=<value>]...
Uma ou mais sequências de cadeia de caracteres, usando o formato nome=valor, contêm as informações que foram definidas no cookie.
Geração de Cookies
Existem três métodos para gerar cookies para o Microsoft Internet Explorer: usando o Microsoft JScript, usando as funções WinINet e usando um script CGI. Todos os métodos precisam definir as informações incluídas no cabeçalho Set-Cookie.
Gerando um cookie usando o modelo de objeto DHTML
Usando o modelo de objeto HTML dinâmico (DHTML), os cookies podem ser definidos chamando a propriedade cookie do objeto de documento, conforme mostrado no exemplo a seguir.
<SCRIPT language="JavaScript">
<!--
document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>
Gerando um cookie usando as funções WinInet
Os cookies podem ser criados por aplicações que utilizam a função deInternetSetCookie. Para obter mais informações, consulte Configuração de um cookie.
Gerando um cookie usando um script CGI
Os cookies são gerados pela inclusão de um cabeçalho Set-Cookie como parte de um script CGI incluído na resposta HTTP a uma solicitação.
O exemplo a seguir é um script CGI que inclui um cabeçalho Set-Cookie usando Perl.
print "Set-Cookie:Test=test_value;
expires=Sat, 01-Jan-2000 00:00:00 GMT;
path=/;"
Observação
WinINet não suporta implementações de servidor. Além disso, não deve ser usado a partir de um serviço. Para implementações ou serviços de servidor, use Microsoft Windows HTTP Services (WinHTTP).