@z0ddak
Мордор напоминает о себе

После смены протокола (http на https) был нарушен кросс-доменный обмен данными. Как исправить?

Разместил тему, т.к. не нашёл тут что то подобное... Перенаправил все запросы сайта через Cloudflare, получив "доверие" Google, выраженное зелёным замочком в браузерах. Так же вместе с этим "необыкновенно полезным" статусом получил сплошной гемор по переписыванию скриптов и т.д.!!!

Настроенный мной транспорт кросс-доменного обмена (использую плагин jquery.ajax-cross-origin.min.js) с выносными скриптами (пользователь копирует код в личном кабинете и вставляет себе на сайт), работавший до этого идеально и без сбоев, в одночасье "упал". Подправив заголовки и немного сам скрипт добился что данные (в json) всё таки долетают до браузера, но распарсить он их отказывается, почему то запрос не парсится! Нужна помощь сообщества, уверен что кто то такое уже пережил)

Скриншот с отладчиком и с кодом запроса - выводом console.log:
dd2d3c8973364a0cacbc5f18ec455959.png

Скрипт, формирующий запрос:

var url = 'https:< - путь до обработчика ->.php';
    $.ajax({
        crossOrigin: true,
        url: url,
        jsonpCallback : "callback",
        data: {< - передаваемые данные ->},
        context: {},

        success: function(data) {

            if (data !== 'ERROR') {

                console.log(data);

            } else {

            }
        }
    });


Кусок кода обработчика:

if (< - если данные получены ->) {

    // Запрашиваем по ним данные в базе данных
    $result_intent = < - тут запрос к БД ->
    $intent = sql_fetch_assoc($result_intent);

    // Собираем массив
    $response[] = array (

        < - присваиваем данные ->,
        "status"    => 'OK'
    );

    // Возвращаем данные в JSON скрипту монитора
    header('Content-type: application/json');
    echo json_encode($response , true);
    exit();
}
echo 'ERROR';


Сам обработчик данные пакует в JSON безошибочно - проверял, да и не менял я его, ДАЖЕ НЕ ПРИКАСАЛСЯ. Данные, как видно со скриншота, долетают до браузера...

ОДИН ОЧЕНЬ ХОРОШИЙ ЧЕЛОВЕК надоумил глянуть во вкладку СЕТЬ отладчика Chrome.
Оказалось что данные приходят шифрованными, пролетая сервера CloudFlare. Соответственно распарсить их браузер никак не может.

Вместо echo 'ERROR'; в обработчике вставил заголовок при ошибке:

header('HTTP/1.1 404 Not Found');
echo 'Ошибка, не все данные получены!';


Вкладка СЕТЬ отладчика (скриншоты):

b2d6e91ef3d541fc819daf7914574ea1.PNG

e6a80faf558d48e4b06140a88198f06a.PNG

И как обойти сие чудо?!.
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы