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/.
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à | Dove | Può 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 Mode | L'interruttore «Under Attack Mode» nella panoramica del sito oppure Security → Settings | Sì. 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 Challenge | Security → 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.
-
Nella dashboard Cloudflare, apri il tuo sito, quindi Security → Security rules (dashboard precedente: Security → WAF → Custom rules) e scegli Create rule → Custom rules.
-
Assegna il nome
WCPOS REST API. -
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 stringarest_route=nella query di un'altra pagina non disattiva la protezione per quella pagina. Se WordPress si trova in una sottocartella, ad esempiohttps://example.com/shop, usa/shop/wp-json/e/shop/al posto di/wp-json/e/. -
In Then take action, scegli Skip.
-
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)».
-
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.
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.