Bagaimana cara memperbarui variabel ajaxurl Wordpress untuk menggunakan SSL?

Kami menjalankan pengaturan Wordpress 4.0/Buddypress dan sejak kami beralih ke SSL semua fungsi ajax tidak berfungsi karena variabel ajaxurl masih membaca "http".

<script type="text/javascript">
 /* <![CDATA[ */
 var ajaxurl = 'http://website.com/wp-admin/admin-ajax.php';
 /* ]]> */
</script>

Kode ini ditambahkan ke wp_head secara otomatis jadi kami tidak begitu yakin bagaimana cara memperbaruinya. Kita hanya perlu mengganti http ke https.

Adakah yang tahu bagaimana kita bisa melakukan ini?

Kami mendapatkan kesalahan ini setiap kali ajax diperlukan: [diblokir] Halaman di 'https://website.com/users' dimuat melalui HTTPS, tetapi menjalankan konten tidak aman dari 'http://website.com/wp-admin/admin-ajax.php': konten ini juga harus dimuat melalui HTTPS.


person FLUXXUATE    schedule 11.09.2014    source sumber
comment
Adakah yang punya saran tentang ini?   -  person FLUXXUATE    schedule 23.09.2014


Jawaban (2)


Variabel ajaxurl mendapatkan nilainya dari fungsi admin_url(), yang kemudian menentukan apakah untuk melakukan https berdasarkan hasil fungsi is_ssl().

Jadi, pada dasarnya, jika Anda tidak mendapatkan https di ajaxurl, fungsi is_ssl() tidak mendeteksi SSL dengan benar di situs Anda.

Jika Anda menggunakan penyeimbang beban atau proksi terbalik yang mendukung HTTP_X_FORWARDED_PROTO (seperti ELB), tambahkan yang berikut ke wp-config.php, sesuai dokumentasi:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
     $_SERVER['HTTPS'] = 'on';

Jika tidak berhasil, lihat gist yang tertaut di bagian Catatan untuk dokumentasi is_ssl(). Anda harus menambahkannya ke direktori plugin Anda.

person Logan    schedule 25.10.2014

Saya juga mempunyai masalah dengan Wordpress, terutama karena saya menggunakan CloudFlare SSL Fleksibel.

Saya melakukan patch cepat dan kotor ini di /wp-includes/load.php

function is_ssl() {
        if ( isset( $_SERVER['HTTP_CF_VISITOR'] ) ) {
            if ( strpos($_SERVER['HTTP_CF_VISITOR'], "https") !== "false" ){
                return true;
            }
        }

        if ( isset( $_SERVER['HTTPS'] ) ) {
                if ( 'on' == strtolower( $_SERVER['HTTPS'] ) ) {
                        return true;
                }

                if ( '1' == $_SERVER['HTTPS'] ) {
                        return true;
                }
        } elseif ( isset($_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
                return true;
        }
        return false;
}

Ini membantu panggilan ajax dari admin yang memblokir banyak fungsi plugin.

person Nick M    schedule 27.10.2017