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 possam armazenar informações sobre itens selecionados, preferências do usuário, informações de registro e outras informações que podem ser recuperadas posteriormente.

Há dois cabeçalhos, Set-Cookie e Cookie, 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 ovalor 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 validade é definida usando o formato expires=date, em que date é a data de validade em Greenwich Mean Time (GMT). Se a data de validade não estiver 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 validade. A data deve usar o seguinte formato:

DAY, DD-MMM-YYYYHH:MM:SS GMT

DIA

O dia da semana (Dom, Mon, Tue, Wed, Thu, Sex, Sat).

DD

O dia do mês (como 01 para o primeiro dia do mês).

MMM

A abreviação de três letras para o mês (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dez).

AAAA

O ano.

HH

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

MM

O valor de 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 o final 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 o nome de domínio final 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 cookies sejam definidos para terminações de nome de domínio amplamente usadas, como .com, .edu e co.jp. 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 qualquer solicitação que corresponda 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 só pode ser enviado 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 é compatível com script 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 Cookie está incluído em todas as solicitações HTTP que têm um cookie cujo domínio e caminho correspondem à solicitação. O cabeçalho Cookie tem o seguinte formato:

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

Uma ou mais sequências de cadeia de caracteres, usando ovalor de nome= de formato, contêm as informações que foram definidas no cookie.

Gerando cookies

Há três métodos para gerar cookies para o Microsoft Internet Explorer: usar o Microsoft JScript, usar as funções WinINet e usar um script CGI. Todos os métodos precisam definir as informações incluídas no cabeçalho Set-Cookie.

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>

Os cookies podem ser criados por aplicativos usando a função InternetSetCookie . Para obter mais informações, consulte Configurando 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 dá suporte a implementações de servidor. Além disso, ele não deve ser usado de um serviço. Para implementações de servidor ou serviços, use Os Serviços HTTP do Microsoft Windows (WinHTTP).