WordPress AJAX-запрос перенаправляется с HTTPS на HTTP - PullRequest
0 голосов
/ 08 мая 2018

У меня есть простой запрос AJAX, который перенаправляется на HTTP. Я попытался добавить завершающий символ '/' и сделать URL-адрес "https", как я видел в предложенных аналогичных публикациях, но он все еще отклоняется.

jQuery.ajax({ url: "https://"+ host +"/wp-content/plugins/calendarview/views/updateRollOut.php/",
         data: {id: eventID, start: start},
         type: 'GET',
         success: function(output) {
                      document.getElementById(rollOutDetails).innerHTML = output;
                  }
    });

В консоли Google Chrome ошибка отображается как:

jquery.js:1 Mixed Content: The page at 
'https://pedalracing.org/newcalendar/' was loaded 
over HTTPS, but requested an insecure XMLHttpRequest endpoint
'http://pedalracing.org/wp-content/plugins/calendarview/views/updateRollOut.php?
id=300770&start=1525905000'.
This request has been blocked; the content must be served over HTTPS.

Когда я нажимаю на ссылку на конечную точку, которая указана в ошибке Chrome, я перехожу на URL:

https://pedalracing.org/wp-content/plugins/calendarview/views/updateRollOut.php?id=300770&start=1525905000

Я не могу понять, куда / почему запрос перенаправляется. Я посмотрел в 301 перенаправления WordPress, но там нет ни одного, который бы затронул эту страницу. Есть идеи?

1 Ответ

0 голосов
/ 09 мая 2018

Взгляните на статью Кодекса о , используя Ajax в плагинах . Что вам нужно сделать, это локализовать ваш JavaScript и добавить «реальную» ссылку на ресурс, на который вы хотите перейти.

Используя wp_localize_script, вы можете сделать следующее:

wp_localize_script( 'script-name', 'MY_AJAX_OBJECT',
    array( 
        'content_dir' => home_url( 'wp-content/plugins/calendarview/views/updateRollOut.php' )
    )
);

Поместите вышеупомянутое в файл вашей темы ( или, что еще лучше, плагин ) (.php) и подключите его к тому же хуку, который использовался для постановки в очередь вашего файла скрипта. В идеале, с помощью действия wp_enqueue_scripts.

Затем вы можете переписать ваш Ajax-запрос следующим образом:

jQuery.ajax(
    {
        url: MY_AJAX_OBJECT.content_dir,
        data: {id: eventID, start: start},
        type: 'GET',
        success: function(output) {
            document.getElementById(rollOutDetails).innerHTML = output;
        }
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...