Salta al contenuto principale
Versione: 1.x

Cloudflare

Cloudflare protegge il tuo sito chiedendo ai visitatori di superare un controllo di sicurezza prima di consentire loro l'accesso. Un browser supera il controllo senza mostrarlo. L'app WCPOS non è un browser: comunica con l'API REST del tuo negozio e, quando Cloudflare risponde a queste richieste con una pagina di controllo di sicurezza invece che con i dati, l'app non riesce a connettersi.

Questa pagina spiega come riconoscere il problema e indicare a Cloudflare di consentire l'accesso all'app. Ogni passaggio è rivolto al proprietario del negozio o a chi gestisce l'account Cloudflare del sito.

Come riconoscere il problema​

  • La schermata di connessione mostra «La configurazione di hosting di questo negozio sta bloccando l'app» con il codice di errore HOST121.
  • Durante la connessione o la sincronizzazione, l'app desktop apre una piccola finestra «Controllo di sicurezza per your-store.com».
  • Le versioni precedenti mostravano «Il sito non sembra essere un sito WordPress» oppure «Il sito ha impiegato troppo tempo per rispondere» anche se il sito era chiaramente online.
  • La stampa cloud si interrompe con il messaggio «un servizio di sicurezza sta bloccando WCPOS Cloud Print».

Per confermare, apri un terminale ed esegui:

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

Un negozio bloccato risponde con lo stato 403 e un'intestazione cf-mitigated: challenge. Un negozio funzionante risponde 200 con content-type: application/json. Se ricevi 404, il sito non usa permalink leggibili: esegui lo stesso controllo su 'https://your-store.com/?rest_route=/'. Se WordPress si trova in una sottocartella, includila: https://example.com/shop/wp-json/.

L'app desktop può superare un controllo una tantum

Le versioni recenti dell'app desktop, quando possibile, completano il controllo di Cloudflare in una piccola finestra. Puoi così continuare a lavorare, ma l'autorizzazione rilasciata da Cloudflare scade (30 minuti per impostazione predefinita) e il controllo si ripresenta. Considera la finestra una soluzione temporanea e applica la correzione seguente.

Quale funzionalità di Cloudflare è responsabile​

La correzione dipende dalla funzionalità che sottopone l'app al controllo. Verifica queste impostazioni nella dashboard Cloudflare del tuo sito. Cloudflare ha modificato più volte i menu; tra parentesi trovi la posizione precedente.

FunzionalitàDovePuò escludere l'API?
Bot Fight Mode (piano Free)Security → Settings → Bot traffic (dashboard precedente: Security → Bots)No. Cloudflare non consente alle regole Skip o Allow di ignorarlo. Disattivalo oppure passa a Pro e usa Super Bot Fight Mode, che può essere escluso dalla regola Skip seguente.
Under Attack ModeL'interruttore «Under Attack Mode» nella panoramica del sito oppure Security → SettingsSì. La regola Skip seguente ignora Security Level, il cui livello viene aumentato da Under Attack Mode. In alternativa, disattiva Under Attack Mode quando l'attacco è terminato.
Super Bot Fight Mode (Pro e versioni successive)Security → Settings → Bot traffic (dashboard precedente: Security → Bots)Sì, con la regola Skip seguente.
Regole WAF personalizzate o gestite impostate su Managed ChallengeSecurity → Security rules (dashboard precedente: Security → WAF)Sì, con la regola Skip seguente, posizionata prima di qualsiasi regola personalizzata che impone un controllo. Le regole gestite vengono sempre applicate dopo quelle personalizzate, quindi per esse l'ordine non è rilevante.

Il plugin ufficiale Cloudflare per WordPress può attivare Under Attack Mode e il WAF, ma non può creare regole Skip. Queste si configurano nella dashboard Cloudflare.

Aggiungere una regola Skip per l'API REST​

Questa correzione vale per tutti i casi tranne Bot Fight Mode. Indica a Cloudflare di non sottoporre a controllo le richieste all'API REST del negozio. Le verifiche di accesso e autorizzazione di WordPress continuano a proteggere questi endpoint.

  1. Nella dashboard Cloudflare, apri il tuo sito, quindi Security → Security rules (dashboard precedente: Security → WAF → Custom rules) e scegli Create rule → Custom rules.

  2. Assegna il nome WCPOS REST API.

  3. In When incoming requests match, scegli Edit expression e incolla:

    (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="))

    La seconda parte corrisponde all'indirizzo alternativo di WordPress, /?rest_route=/..., e solo nella radice del sito, così una stringa rest_route= nella query di un'altra pagina non disattiva la protezione per quella pagina. Se WordPress si trova in una sottocartella, ad esempio https://example.com/shop, usa /shop/wp-json/ e /shop/ al posto di /wp-json/ e /.

  4. In Then take action, scegli Skip.

  5. Seleziona All remaining custom rules. Nell'elenco dei componenti da ignorare, seleziona All Super Bot Fight Mode rules e Security Level. Seleziona All managed rules solo se il controllo è causato da una regola gestita e non modificare le voci contrassegnate con «(Previous version)».

  6. Distribuisci la regola. Se hai altre regole personalizzate che impongono controlli o blocchi, assicurati che questa sia posizionata prima di loro.

Esegui di nuovo il controllo curl. L'intestazione cf-mitigated dovrebbe essere scomparsa e la risposta dovrebbe essere in formato JSON.

Piano Free e Bot Fight Mode

Se il controllo curl mostra ancora una verifica dopo aver aggiunto la regola Skip e Bot Fight Mode è attivo, la causa è Bot Fight Mode. Con il piano Free l'unica soluzione è disattivarlo in Security → Settings → Bot traffic. La documentazione di Cloudflare conferma che nessuna regola può aggirarlo. Se Bot Fight Mode è già disattivato, vedi Ancora bloccato?.

Memorizzazione nella cache​

Cloudflare può anche memorizzare nella cache le risposte dell'API REST, facendo visualizzare all'app prodotti e ordini non aggiornati. La regola Skip precedente non modifica la memorizzazione nella cache. Se usi la cache di Cloudflare per le pagine HTML o Automatic Platform Optimization, aggiungi una Cache Rule che imposti Bypass cache per la stessa espressione.

Ancora bloccato?​

Verifica che la regola Skip sia stata distribuita e non salvata come bozza e che nessuna regola IP Access blocchi la rete della cassa. Altri servizi che precedono il tuo sito si comportano allo stesso modo di Cloudflare: consulta Conflitti tra plugin per i plugin di sicurezza e le note sull'hosting per GoDaddy, WP Engine e altri.