Ich habe ein WordPress-Backend, in dem ich der API meine eigenen benutzerdefinierten Endpunkte hinzugefügt habe:
// retrieve countries
register_rest_route( $namespace, '/countries',
array(
'methods' => 'GET',
'callback' => array( $this, 'get_countries' ),
)
);
// check answer
register_rest_route( $namespace, '/check_answer',
array(
'methods' => 'POST',
'callback' => array( $this, 'check_answer' ),
)
);
Ich habe meine Umgebung wie folgt eingerichtet: https://beispiel.com Hier befindet sich die React-Anwendung, und WordPress befindet sich in einem Unterverzeichnis, on https://example.com/wp
Meine React-Anwendung stellt POST- und GET-Anforderungen an die oben genannten Endpunkte. Ich habe eine Produktionsumgebungsvariable, in der ich die Basis-URL der API festlege, nämlich https://example.com/wp/wp-json/game
(‘game’ ist mein Namensraum) und so kann ich mit Axios Anfragen stellen https://example.com/wp/wp-json/game/countries
und https://example.com/wp/wp-json/game/check_answer
und hier kommt das Problem.
Mein Server ist so konfiguriert, dass er die React-Anwendung sowohl mit als auch ohne bedient www
. So https://beispiel.com und https://www.beispiel.com beide dienen der gleichen Anwendung.
Dies führt jedoch zu einem interessanten Problem für meine benutzerdefinierten Endpunkte: Die GET-Anforderung funktioniert immer. aber die POST-Anfrage funktioniert nur, wenn ich es ausprobiere https://beispiel.comNicht von https://www.beispiel.com . Im letzteren Fall zeigt es mir einfach eine fehlgeschlagene Anfrage. Keine Antwort, nichts.
Ich habe gegoogelt und es scheint mit CORS zusammenzuhängen, aber ich konnte es nicht beheben. Irgendwelche Ideen hier?
Was sind die genauen Fehlermeldungen, die der Browser in der devtools-Konsole protokolliert?
– Seitenschaubarker
10. Mai 2020 um 0:25 Uhr
Welche Schritte haben Sie unternommen, um den Server, an den die Anfrage gesendet wird, CORS-fähig zu machen?
– Seitenschaubarker
10. Mai 2020 um 0:26 Uhr
Es gibt andere Überschriften wie z
Access-Control-Allow-Methods
usw., die Sie möglicherweise einstellen müssen. Vielleicht hilft Ihnen diese SO-Frage weiter: stackoverflow.com/questions/8719276/…– Sunil Chaudhary
12. Mai 2020 um 13:38 Uhr
@DannyHobo Können Sie einige zusätzliche Informationen über Ihre lokale Entwicklungsumgebung mitteilen? – Verwendet Ihre React-App CRA (Create React App)? – Verwenden Sie Laravel Valet oder ein ähnliches Tool für Ihre lokale WordPress-Umgebung? Wenn ja, verwenden Sie Nginx oder Apache? – Verwendet Ihre React-App SSR? – Arbeitest du an einem Storybook oder ähnlichem? Ich beschäftige mich viel damit, aber ich brauche einige zusätzliche Informationen, um Sie zu entsperren.
– Joe Dooley
16. Mai 2020 um 22:24 Uhr
@AjeetShah siehe in der Antwort unten, ich habe genau den Code ausprobiert, den Shazyriver bereitgestellt hat
– Danny Hobo
17. Mai 2020 um 20:00 Uhr