it-swarm.com.de

Admin-Ajax.php, SSL, Nicht-SSL

Ich habe eine WordPress-Site hinter einem Reverse-Proxy. Die Site befindet sich über http, mit Ausnahme des Bereichs wp-admin, der sich unter https befindet. Wir haben keine BasicAuth oder irgendetwas, das über dem Admin-Bereich läuft.

Eines unserer Front-End-Plugins schlägt fehl, weil es von einer Front-End-http-Seite aus einen Aufruf an https: //admin-ajax.php ausführt, und Browser scheinen dieses Verhalten nicht zu mögen. (Wenn es darauf ankommt, enthält die URL-Zeichenfolge Nonces.)

Was ist die beste Möglichkeit, Front-End-Aufrufe von admin-ajax.php zuzulassen? Soll ich alle Aufrufe dieser Datei von https nach http umleiten? Wenn ja, wie kann ich das tun, während alle anderen Dateien unter/wp-admin unter https gespeichert sein müssen?

Anregungen wäre sehr dankbar.

PS: Der folgende Code ist der, den wir derzeit in wp-config haben:

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
3
user64391

Ich würde empfehlen, diese Konstante in Ihrem wp-config.php zu definieren, um HTTPS auf admin zu erzwingen:

define('FORCE_SSL_ADMIN', true);

Es gibt auch eine Funktion namens is_admin(), die in Ihrem Fall hilfreich sein kann.

if ( is_admin() ) {
    $_SERVER['HTTPS'] = 'on';
}

Wenn Sie jedoch eine Regel auf Ihrem Webserver haben, die die Ausführung aller wp-admin- und wp-login.php-Anforderungen über SSL erzwingt, müssen Sie eine Ausnahme für die admin-ajax.php-Datei hinzufügen. Ich bin nicht sicher, wie ich das in Apache implementieren soll, aber für NGINX wäre der einfachste Weg so etwas wie:

if ($request_uri !~* "^/wp-admin/admin-ajax\.php") { rewrite "^/wp-(admin|login)" https://$Host$request_uri permanent; }

Hoffe das hilft!

1