Uma maneira comum de verificar o suporte a cookies é por meio de um redirecionamento.
É uma boa ideia fazer isso apenas quando o usuário está tentando fazer algo que inicia uma sessão, como fazer login ou adicionar algo ao carrinho. Caso contrário, dependendo de como você lida com isso, você está potencialmente bloqueando o acesso a todo o seu site para usuários - ou bots - que não oferecem suporte a cookies.
Primeiro, o servidor verifica os dados de login normalmente - se os dados de login estiverem errados, o usuário recebe esse feedback normalmente. Se estiver certo, o servidor responde imediatamente com um cookie e redireciona para uma página que foi projetada para verificar esse cookie - que pode ser apenas o mesmo URL, mas com algum sinalizador adicionado à string de consulta. Se essa segunda página não receber o cookie, o usuário receberá uma mensagem informando que não pode fazer login porque os cookies estão desabilitados em seu navegador.
Se você já está seguindo o padrão Post-Redirect-Get para o seu formulário de login, então essa configuração e verificação do cookie não adiciona nenhuma solicitação adicional - o cookie pode ser definido durante o redirecionamento existente e verificado pelo destino que carrega após o redirecionamento.
Agora, por que eu só faço um teste de cookie após uma ação iniciada pelo usuário, exceto em cada carregamento de página. Já vi sites implementarem um teste de cookie em cada página, sem perceber que isso afetará coisas como mecanismos de pesquisa que tentam rastrear o site. Ou seja, se um usuário tem cookies habilitados, o cookie de teste é definido uma vez, de modo que ele só precisa sofrer um redirecionamento na primeira página que solicitar e, a partir daí, não haverá redirecionamentos. No entanto, para qualquer navegador ou outro agente de usuário, como um mecanismo de pesquisa, que não retorna cookies, cada página pode simplesmente resultar em um redirecionamento.
Outro método de verificação de suporte a cookies é com Javascript - dessa forma, nenhum redirecionamento é necessário - você pode escrever um cookie e lê-lo de volta virtualmente imediatamente para ver se ele foi armazenado e depois recuperado. A desvantagem disso é que ele roda em script no lado do cliente - ou seja, se você ainda deseja que a mensagem sobre se os cookies são suportados para retornar ao servidor, então você ainda tem que organizar isso - como em uma chamada Ajax.
Para meu próprio aplicativo, implemento alguma proteção para ataques 'Login CSRF', uma variante dos ataques CSRF, definindo um cookie contendo um token aleatório na tela de login antes que o usuário efetue login e verificando esse token quando o usuário envia seu login detalhes. Leia mais sobre o Login CSRF do Google. Um efeito colateral disso é que, no momento em que eles fazem login, posso verificar a existência desse cookie - um redirecionamento extra não é necessário.