Pular para o conteúdo principal
Versão: 1.x

Cloudflare

A Cloudflare protege seu site solicitando que os visitantes passem por uma verificação de segurança antes de permitir o acesso. Um navegador passa por essa verificação silenciosamente. O aplicativo WCPOS não é um navegador: ele se comunica com a REST API da sua loja e, quando a Cloudflare responde a essas chamadas com uma página de verificação de segurança em vez de dados, o aplicativo não consegue se conectar.

Esta página explica como identificar o problema e como configurar a Cloudflare para permitir o acesso do aplicativo. Todas as etapas são destinadas ao proprietário da loja ou a quem administra a conta da Cloudflare do site.

Como identificar o problema​

  • A tela de conexão mostra “A configuração de hospedagem desta loja está bloqueando o aplicativo” com o código de erro HOST121.
  • O aplicativo para computador abre uma pequena janela “Verificação de segurança para your-store.com” durante a conexão ou sincronização.
  • Versões mais antigas exibiam “O site não parece ser um site WordPress” ou “O site demorou muito para responder” mesmo quando o site estava claramente on-line.
  • A impressão na nuvem é interrompida com a mensagem “um serviço de segurança está bloqueando o WCPOS Cloud Print”.

Para confirmar, abra um terminal e execute:

curl -sI https://your-store.com/wp-json/

Uma loja bloqueada responde com o status 403 e o cabeçalho cf-mitigated: challenge. Uma loja funcionando responde 200 com content-type: application/json. Se você receber 404, seu site não usa links permanentes amigáveis; execute a mesma verificação em 'https://your-store.com/?rest_route=/' em vez disso. Se o WordPress estiver em uma subpasta, inclua-a: https://example.com/shop/wp-json/.

O aplicativo para computador pode passar por uma verificação pontual

Versões recentes do aplicativo para computador concluem a verificação da Cloudflare em uma pequena janela, quando possível. Isso permite que você continue trabalhando, mas a liberação concedida pela Cloudflare expira (30 minutos por padrão) e a verificação volta a aparecer. Considere essa janela uma solução temporária e aplique a correção abaixo.

Qual recurso da Cloudflare está causando o problema​

A correção depende do recurso que está desafiando o aplicativo. Verifique estes itens no painel da Cloudflare do seu site. A Cloudflare está reorganizando os menus; os caminhos antigos aparecem entre parênteses.

RecursoOndeÉ possível isentar a API?
Bot Fight Mode (plano Free)Security → Settings → Bot traffic (painel antigo: Security → Bots)Não. A Cloudflare não permite que regras Skip ou Allow o ignorem. Desative-o ou faça upgrade para o Pro e use o Super Bot Fight Mode, que pode ser isentado pela regra Skip abaixo.
Under Attack ModeO botão “Under Attack Mode” na página Visão geral do site ou Security → SettingsSim. A regra Skip abaixo ignora Security Level, que é elevado pelo Under Attack Mode. Ou desative o Under Attack Mode quando o ataque terminar.
Super Bot Fight Mode (Pro ou superior)Security → Settings → Bot traffic (painel antigo: Security → Bots)Sim, usando a regra Skip abaixo.
Regras personalizadas ou gerenciadas do WAF definidas como Managed ChallengeSecurity → Security rules (painel antigo: Security → WAF)Sim, usando a regra Skip abaixo, posicionada acima de qualquer regra personalizada que apresente um desafio. As regras gerenciadas sempre são executadas depois das regras personalizadas, então a ordem não importa para elas.

O plugin oficial da Cloudflare para WordPress pode alternar o Under Attack Mode e ativar o WAF, mas não pode criar regras Skip. Elas ficam no painel da Cloudflare.

Adicione uma regra Skip para a REST API​

Esta é a correção para todos os casos, exceto o Bot Fight Mode. Ela instrui a Cloudflare a não apresentar desafios às solicitações da REST API da sua loja. As próprias verificações de login e permissão do WordPress continuam protegendo esses endpoints.

  1. No painel da Cloudflare, abra seu site e acesse Security → Security rules (painel antigo: Security → WAF → Custom rules); em seguida, escolha Create rule → Custom rules.

  2. Dê o nome WCPOS REST API à regra.

  3. Em When incoming requests match, escolha Edit expression e cole:

    (starts_with(http.request.uri.path, "/wp-json/")) or (http.request.uri.path eq "/" and (starts_with(http.request.uri.query, "rest_route=") or http.request.uri.query contains "&rest_route="))

    A segunda parte corresponde ao endereço alternativo do WordPress, /?rest_route=/..., e somente à raiz do site. Assim, uma string rest_route= inserida na consulta de outra página não desativa a proteção dessa página. Se o WordPress estiver em uma subpasta, como https://example.com/shop, use /shop/wp-json/ e /shop/ no lugar de /wp-json/ e /.

  4. Em Then take action, escolha Skip.

  5. Marque All remaining custom rules. Na lista de componentes a ignorar, marque All Super Bot Fight Mode rules e Security Level. Marque All managed rules somente se uma regra gerenciada estiver apresentando o desafio e não altere nenhuma entrada marcada como “(Previous version)”.

  6. Implante a regra. Se houver outras regras personalizadas que apresentem desafios ou bloqueiem solicitações, verifique se esta está posicionada acima delas.

Execute novamente a verificação com curl. O cabeçalho cf-mitigated deve desaparecer, e a resposta deve ser JSON.

Plano Free e Bot Fight Mode

Se a verificação com curl ainda mostrar um desafio depois de adicionar a regra Skip e o Bot Fight Mode estiver ativado, a causa é o Bot Fight Mode. No plano Free, a única correção é desativá-lo em Security → Settings → Bot traffic. A documentação da própria Cloudflare confirma que nenhuma regra pode ignorá-lo. Se o Bot Fight Mode já estiver desativado, consulte Ainda está bloqueado?.

Cache​

A Cloudflare também pode armazenar em cache as respostas da REST API, fazendo o aplicativo exibir produtos e pedidos desatualizados. A regra Skip acima não altera o cache. Se você usa o cache da Cloudflare para páginas HTML ou o Automatic Platform Optimization, adicione uma Cache Rule que defina Bypass cache para a mesma expressão.

Ainda está bloqueado?​

Verifique se a regra Skip foi implantada, em vez de salva como rascunho, e se nenhuma regra IP Access bloqueia a rede do caixa. Outros serviços que ficam na frente do seu site funcionam de maneira semelhante à Cloudflare: consulte Conflitos entre plugins para plugins de segurança e as notas sobre hospedagem para GoDaddy, WP Engine e outros.