Viimasel paaril päeval on osad kasutajad, kellel WP install on domeeni alamkaustas või alamdomeenil ja kasutavad Gutenberg editori kuid käivitatakse veebilehte põhidomeeni kaudu, meie poole pöördunud murega, et kas WP API kaudu päringud ei toimi või ei ole võimalik uuendada lehtedel/postitustes olevat sisu.
Antud võimalik “murekoht” paistab olevat seotud CORS turvalisusega (Täpsemalt: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ) kus siis muudel domeenidel (ka põhidomeen on muu domeeninimi, kui üritatakse ligi pääseda API kaudu alamdomeenile ja vastupidi) kui WP installitud domeenil, keelatakse ligipääs veebiserveri ja veebibrowseri vahel vastavalt üldistele turvalisusmäärangutele olenevalt, millise CORS määrangu veebiserver veebibrowserile tagastab.

WordPressi jaoks oleks lahenduseks üks järgnevatest:
– Kasutada Gutenbergi asemel tavaeditori (Classic editor)
– Muuta site ja home URL’id samaks
– Lisada functions.php faili (soovitame kasutada child-theme oma, kuna vastasel juhul võib teema või WP uuendus selle uuesti üle kirjutada!) kood:

01 add_action('init''handle_preflight');
02 function handle_preflight() {
03     $origin = get_http_origin();
04     if ($origin === 'https://TEIEDOMEENINIMI_TLD') {
05         header("Access-Control-Allow-Origin: TEIEDOMEENINIMI_TLD");
06         header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
07         header("Access-Control-Allow-Credentials: true");
08         header('Access-Control-Allow-Headers: Origin, X-Requested-With, X-WP-Nonce, Content-Type, Accept, Authorization');
09         if ('OPTIONS' == $_SERVER['REQUEST_METHOD']) {
10             status_header(200);
11             exit();
12         }
13     }
14 }
15 add_filter('rest_authentication_errors''rest_filter_incoming_connections');
16 function rest_filter_incoming_connections($errors) {
17     $request_server $_SERVER['REMOTE_ADDR'];
18     $origin = get_http_origin();
19     if ($origin !== 'https://TEIEDOMEENINIMI_TLD'return new WP_Error('forbidden_access'$originarray(
20         'status' => 403
21     ));
22     return $errors;
23 }

Kus siis TEIEDOMEENINIMI_TLD tuleks asendada vastava domeeniga/alamdomeeniga, millelt päringuid tehakse ja hetkel on blokeeritud!

Antud kood ja info on inglisekeelsena leitav lingilt:
WordPress REST API CORS Issues Solved
Lisainfot antud Gutenbergi WP vea kohta on leitav ka lehelt:
Gutenberg breaks completely if site URL is not the same as wordpress URL

Radicenter 2024