O que é um biscoito
"Um cookie é uma variável armazenada no computador do visitante. Este cookie é enviado sempre que o mesmo computador solicita uma página através do navegador. Você pode usar o JavaScript para criar e recuperar o valor do cookie". - W3school
Um cookie é um arquivo criado por um site visitado e é usado para armazenar informações de navegação, como informações de perfil.
Do ponto de vista do JavaScript, os cookies são algumas informações sobre as cordas. Essas informações são armazenadas no computador do cliente e são usadas para passar informações entre o computador cliente e o servidor.
Essas informações podem ser lidas ou definidas através do Document.Cookie em JavaScript. Como os cookies são usados principalmente para se comunicar entre o cliente e o servidor, além do JavaScript, o idioma do servidor (como o PHP) também pode acessar cookies.
Noções básicas de biscoito
Os cookies têm limites de tamanho. Os dados armazenados em cada cookie não podem exceder 4KB. Se o comprimento da corda do cookie exceder 4KB, esta propriedade retornará uma string vazia.
Como os cookies são armazenados no computador cliente na forma de arquivos, é muito conveniente visualizar e modificar cookies, e é por isso que se diz que os cookies não podem armazenar informações importantes.
O formato de cada cookie é o seguinte: <Nome do cookie> = <Value>; O nome e o valor devem ser identificadores legais.
Os cookies são válidos pelo período de tempo. Por padrão, o ciclo de vida de um biscoito termina quando o navegador fecha. Se você deseja que o cookie seja capaz de usar depois que o navegador estiver desligado, você deve definir o período de validade para o cookie, que é a data de validade do cookie.
alerta (typeof document.cookie) O resultado é string. Eu costumava pensar que era uma matriz e fiz piadas ...
Os cookies têm o conceito de domínio e caminho. Domínio é o conceito de domínio. Como o navegador é um ambiente consciente da segurança, diferentes domínios não podem acessar cookies um do outro (é claro, você pode obter acesso ao domínio cruzado por meio de configurações especiais). O caminho é o conceito de roteamento. Os cookies criados por uma página da Web só podem ser acessados por todas as páginas da Web no mesmo diretório ou subdiretório que esta página da Web, mas não podem ser acessadas por outros diretórios (esta frase é um pouco confusa, será fácil de entender depois de um tempo).
De fato, a maneira de criar cookies é um pouco semelhante à maneira de definir variáveis, ambas exigem o uso de nomes e valores de cookies. Vários cookies podem ser criados no mesmo site, e vários cookies podem ser armazenados no mesmo arquivo de cookie.
Perguntas frequentes sobre biscoitos
Existem dois tipos de cookies:
Os cookies estabelecidos pelo site atual que você está navegando
Cookies de terceiros de outras fontes de domínio, como incorporar anúncios ou imagens nas páginas da web (o site pode rastrear suas informações de uso usando esses cookies)
O conhecimento básico mencionou o problema do ciclo de vida de um biscoito. De fato, os cookies podem ser divididos em dois estados:
Cookies temporários. Durante o processo de uso atual, o site armazenará algumas informações pessoais e as informações serão excluídas do computador depois que o navegador estiver fechado.
Define o cookie para o tempo de validade. Mesmo que o navegador esteja desligado, a indústria da informação ainda estará no computador. Como o nome de login e a senha, não há necessidade de fazer login toda vez que você for para um site específico. Este cookie pode ser mantido no computador por vários dias, meses ou até anos
Existem duas maneiras de limpar os cookies:
Cookies limpos através das ferramentas do navegador (existem ferramentas de terceiros, e o próprio navegador também tem essa função)
Limpar cookies definindo o período de validade dos cookies
NOTA: A exclusão de cookies às vezes pode causar algumas páginas da web para não funcionar corretamente
Os navegadores podem aceitar e negar o acesso a cookies por meio de configurações.
Por razões funcionais e de desempenho, é recomendável minimizar o número de cookies utilizados e usar cookies pequenos o máximo possível.
Detalhes sobre a codificação de cookies serão introduzidos separadamente no artigo Advanced Advanced.
Se for uma página no disco local, o console do Chrome não pode usar o JavaScript para ler e escrever cookies. A solução é ... altere um navegador^_^.
Uso básico de cookies
1. Operações de acesso simples
Ao acessar cookies usando JavaScript, você deve usar o atributo Cookie do objeto de documento; Uma linha de código apresenta como criar e modificar um cookie:
A cópia do código é a seguinte:
document.cookie = 'nome de usuário = darren';
No código acima, o 'nome de usuário' representa o nome do cookie e 'Darren' representa o valor correspondente a esse nome. Supondo que o nome do cookie não exista, um novo cookie é criado; Se existir, o valor correspondente ao nome do cookie será modificado. Se você deseja criar cookies várias vezes, use esse método repetidamente.
2. Operação de leitura de biscoitos
Na verdade, é muito simples ler cookies com precisão, o que é operar em strings. Copie este código no W3School para analisar:
A cópia do código é a seguinte:
função getcookie (c_name) {
if (document.cookie.length> 0) {// primeiro verifique se o cookie está vazio, se estiver vazio, retorne ""
c_start = document.cookie.indexof (c_name + "=") // Verifique se esse cookie existe através do indexOf () do objeto String. Se não existir, é -1
if (c_start! =-1) {
c_start = c_start +c_name.length +1 // o último +1 significa o número "=", para que a posição inicial do valor do cookie seja obtida
c_end = document.cookie.indexof (";", c_start) // Na verdade, quando vi o segundo parâmetro de indexOf (), de repente fiquei um pouco tonto. Mais tarde, lembrei -me de que indica a posição especificada do índice inicial ... Esta frase é obter a posição final do valor. Como é necessário considerar se é o último item, é julgado pelo fato de o "" "; número existe.
if (c_end ==-1) c_end = document.cookie.length
Retorne UNescape (document.cookie.substring (c_start, c_end)) // O valor é obtido através da substring (). Se você quiser entender o UNESCAPE (), primeiro deve saber o que o Escape () faz. Eles são todos básicos muito importantes. Se você quiser saber, pode procurar por isso. Os detalhes da codificação de cookies também serão explicados no final do artigo.
}
}
retornar ""
}
Obviamente, existem muitas maneiras de implementar cookies, como matrizes, regularidades, etc., então não vou entrar em detalhes aqui.
3. Defina o período de validade dos cookies
O ciclo de vida dos cookies que geralmente aparecem nos artigos é o período de validade e o período de validade, ou seja, o momento em que os cookies existem. Por padrão, os cookies serão limpos automaticamente quando o navegador estiver fechado, mas podemos definir o período de validade dos cookies por meio de expira. A sintaxe é a seguinte:
A cópia do código é a seguinte:
document.cookie = "name = value; expire = date";
O valor da data no código acima é uma sequência do tipo Date no formato GMT (Hora de Greenwich), e o método de geração é o seguinte:
A cópia do código é a seguinte:
var _date = new Date ();
_date.setDate (_date.getDate ()+30);
_date.togmtString ();
As três linhas de código acima são divididas em várias etapas:
Gerar uma instância de data até o novo para obter o horário atual;
O método getDate () recebe um dia no mês local atual e depois adiciona 30, o que significa que espero que este cookie possa ser salvo localmente por 30 dias;
Em seguida, defina o tempo através do método setDate ();
Por fim, use o método togmtstring () para converter o objeto Data em uma string e retornar o resultado
A função completa a seguir ilustra os pontos aos quais precisamos prestar atenção ao criar cookies. Crie uma função que armazena informações em um cookie:
A cópia do código é a seguinte:
função setcookie (c_name, value, expire) {
var exdate = new Date ();
exdate.setDate (exdate.getdate () + expireays);
document.cookie = c_name + "=" + Escape (value) + ((expireays == null)? "": "; expira =" + exdate.togmtString ());
}
// Método de uso: setcookie ('nome de usuário', 'darren', 30)
Agora, nossa função define o tempo válido do cookie de acordo com o número de dias. Se você deseja defini -lo em outras unidades (como: horas), altere a terceira linha de código:
A cópia do código é a seguinte:
exdate.Sethours (exdate.gethours () + expireays);
Dessa forma, o período de validade dos cookies será baseado em horas.
Existem duas maneiras de limpar os cookies nas perguntas frequentes. Agora queremos dizer que os cookies são invalidados, definindo o período de validade como um tempo expirado. Como existe um método para definir a data de vencimento, peça aos amigos interessados que façam você mesmo^_^. Vamos continuar com o tópico mais profundo do cookie abaixo.
Cookie avançado
One.Cookie Path Concept
No básico, há uma menção ao conceito de cookies com domínios e caminhos. Agora vamos apresentar o papel dos caminhos nos cookies.
Os cookies geralmente são criados porque os usuários acessam a página, mas esse cookie não está acessível apenas na página em que o cookie é criado.
Por padrão, apenas as páginas da Web no mesmo diretório ou subdiretório que a página que criou o cookie pode ser acessada. Isso se deve a considerações de segurança, nem todas as páginas podem acessar cookies criados por outras páginas à vontade. Por exemplo:
Crie um cookie na página "//www.vevb.com/darren_code/", então a página sob o caminho "/darren_code/" como: "//www.vevb.com/darren_code/archive/2011/11/07/cookie.html" pode obter informações sobre cookie por default.
Por padrão, "//www.vevb.com" ou "//www.vevb.com/xxxx/" não pode acessar esse cookie (é inútil apenas olhar para ele, praticar a verdade^_^).
Portanto, como tornar esse cookie acessível a outros diretórios ou diretórios de pais, você pode alcançá -lo definindo o caminho do cookie. Exemplos são os seguintes:
A cópia do código é a seguinte:
document.cookie = "nome = value; caminho = caminho"
document.cookie = "name = value; expire = date; path = path"
O caminho da fonte vermelha é o caminho do cookie. O exemplo mais comum é deixar o cookie estar no diretório, para que, independentemente da subpagem criada, todas as páginas podem ser acessadas:
A cópia do código é a seguinte:
document.cookie = "nome = darren; path =/";
Conceito de domínio de dois.cookie
O caminho pode resolver o problema de acessar cookies no mesmo domínio. Vamos continuar falando sobre o problema de acessar cookies entre o mesmo domínio. A sintaxe é a seguinte:
A cópia do código é a seguinte:
document.cookie = "name = value; path = path; domain = domain";
O domínio vermelho é o valor do conjunto de campo de cookies.
Por exemplo, "www.qq.com" e "sports.qq.com" compartilham um nome de domínio relacionado "qq.com". Se queremos que o cookie em "sports.qq.com" seja acessado por "www.qq.com", precisamos usar o atributo de domínio do cookie e definir o atributo do caminho para "/". exemplo:
A cópia do código é a seguinte:
document.cookie = "nome de usuário = darren; path =/; domain = qq.com";
Nota: é definitivamente acesso entre o mesmo domínio e o valor do domínio não pode ser definido como um nome de domínio que não é o domínio principal.
Segurança do Three.Cookie
Geralmente, as informações de cookies são usadas para passar dados usando conexões HTTP. Esse método de entrega é fácil de visualizar; portanto, as informações armazenadas nos cookies são facilmente roubadas. Se o conteúdo entregue no cookie for mais importante, será necessária a transmissão de dados criptografada.
Portanto, o nome desse atributo do cookie é "seguro" e o valor padrão está vazio. Se o atributo de um cookie estiver seguro, os dados serão transmitidos entre ele e o servidor por meio de HTTPS ou outros protocolos de segurança. A sintaxe é a seguinte:
A cópia do código é a seguinte:
document.cookie = "nome de usuário = darren; seguro"
A configuração de cookies para proteger apenas garante que o processo de transmissão de dados entre os cookies e o servidor seja criptografado, enquanto o arquivo de cookie armazenado localmente não é criptografado. Se você deseja que os cookies locais sejam criptografados, você mesmo precisa criptografar seus dados.
Nota: Mesmo que o atributo seguro esteja definido, isso não significa que outros não possam ver as informações de cookies salvas localmente em sua máquina; portanto, afinal, não coloque informações importantes sobre cookies, ...
Four.Cookie codifica os detalhes
Originalmente, eu queria introduzir o conhecimento da codificação de cookies na seção de perguntas frequentes, porque se eu não entender isso, o problema de codificação é realmente uma armadilha, então vou falar sobre isso em detalhes.
Ao inserir informações sobre cookies, você não pode incluir símbolos especiais, como espaços, semicolons, vírgulas etc. e, em geral, o armazenamento de informações de biscoitos é de maneira não codificada. Portanto, antes de definir informações de cookies, você deve primeiro usar a função Escape () para codificar as informações do valor do cookie e, quando obtiver o valor do cookie, use a função UNESCAPE () para converter o valor de volta. Se definir cookies:
A cópia do código é a seguinte:
document.cookie = nome + "=" + escape (valor);
Vamos dar uma olhada na frase em getcookie () mencionado no uso básico:
A cópia do código é a seguinte:
return unescape (document.cookie.substring (c_start, c_end));
Dessa forma, você não precisa se preocupar com o erro de informação do cookie, porque um símbolo especial aparece no valor do cookie.
Código pessoal
A cópia do código é a seguinte:
/*Defina cookies*/
função setcookie (c_name, value, expirado, caminho, domínio, seguro) {
var exdate = new Date (); // Obtenha o horário atual
exdate.setDate (exdate.getdate () + expirado); // Tempo de validade
document.cookie = c_name + "=" + // Nome do cookie
Escape (valor) + // codificando o valor do cookie
((expireays == null)? "": "; expires =" + exdate.togmtString ()) + // Defina o tempo de expiração
((PATH == NULL)? '/': '; PATH =' + PATH) + // Defina o caminho de acesso
((domain == null)? '': '; domain =' + domain) + // Defina o domínio de acesso
((seguro == null)? '': '; seguro =' + seguro); // Defina se deve criptografar ou não
};
setCookie ('teste', 'nome = sheng; sex = homens; lancer = tearbear', 30);
setcookie ('bb', 'nome = sheng; sexo = homens', 30);
/*Obtenha cookies*/
função getcookie (c_name, index) {
var cookies = document.cookie; // Obtenha o valor do cookie
var cookielen = cookies.length; // Obtenha comprimento de biscoito
if (cookielen> 0) {// quando o cookie não estiver vazio
var c_start = cookies.indexof (c_name + '='); // Encontre o número de série necessário para o valor do cookie no cookie
if (c_start> -1) {// Quando o valor do cookie existe
c_start + = c_name.length + 1; // Obtenha o número da sequência de início do valor do cookie
var c_end = cookies.indexof (';', c_start); // Obtenha o número da sequência final do valor do cookie
if (c_end == -1) {// quando o cookie é o último
c_end = cookielen; // Defina o número da sequência final do valor do cookie para o comprimento do cookie
};
var cookiest = UNESCAPE (Cookies.substring (c_start, c_end)); // Obtenha o valor do cookie decodificado
var cookieobj = cookiest.split (';'); // Valor do cookie dividido
índice = ((index == null)? 0: Índice); // julga se o índice é passado em um valor
var golobj = cookieobj [index]; // Array de índice
var golstr = golobj.split ('=');
var getCook = golstr [1]; // Obtenha o valor do cookie que precisa ser obtido
retornar getcook;
};
} outro {
console.log ('A página não tem cookies');
}
};
alerta (getcookie ('teste', 0)); // Imprimir valor de biscoito de consulta