Cookies HTTP

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 os 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.

Existem dois cabeçalhos, Set-Cookie e Cookie, que estão relacionados a 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.

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 valor do nome=do padrão 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 expires=date, em que date é a data de expiração no GMT (Horário de Greenwich). Se a data de expiração não for definida, o cookie expirará após o término da sessão da Internet. Caso contrário, o cookie será mantido no cache até a data de expiração. A data deve usar o seguinte formato:

DIA, DD-MMM-YYYY HH:MM:SS GMT

DAY

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, Aug, Set, Out, Nov, Dec).

YYYY

O ano.

HH

O valor da hora no horário militar (22 seria 22:00, por exemplo).

MM

O valor do minuto.

SS

O segundo valor.

A especificação do nome de domínio, usando o padrão domain=domain_name, é opcional para cookies persistentes e é usada 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 pontos para evitar que os cookies sejam definidos para terminações de nomes de domínio amplamente usados, 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 dos URLs para os quais o cookie é válido. Se um caminho for especificado, o cookie será considerado válido para todas as solicitações que corresponderem 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á considerado 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.

Por fim, um cookie pode ser marcado como HttpOnly (os atributos não diferenciam maiúsculas de minúsculas), para indicar que o cookie não pode ser gravado e não deve ser revelado ao aplicativo cliente, por motivos de segurança. Na Internet do Windows, isso significa que o cookie não pode ser recuperado por meio da função InternetGetCookie.

O cabeçalho do Cookie é incluído em todas as solicitações HTTP que têm um cookie cujo domínio e caminho correspondem à solicitação. O cabeçalho do Cookie tem o seguinte formato:

Cookie: <name>=<value> [;<name>=<value>]...

Uma ou mais sequências de strings, usando o valor do nome= do formato, 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.

Usando o modelo de objeto DHTML (HTML dinâmico), os cookies podem ser definidos chamando a propriedade cookie do objeto do documento, conforme mostrado no exemplo a seguir.

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

Os cookies podem ser criados por aplicativos usando a função InternetSetCookie. Para obter mais informações, consulte Definindo um cookie.

Os cookies são gerados incluindo 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

O WinINet não oferece suporte a 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 o Microsoft Windows HTTP Services (WinHTTP).