Кордова: не удалось выполнить «отправить» на «XMLHttpRequest»

Я пытаюсь вернуть свое приложение Cordova, так как в последний раз, когда он работал, срок действия моего сервера истек, и мне пришлось перестроить базу данных и загрузить мои php-интерфейсы в другом домене, чем раньше.

Итак, после того, как вся работа на сервере была сделана, и все как было, я изменил все ссылки в своем приложении и разрешения на внешние источники, но все равно, когда я запускаю приложение, когда он встречает первый вызов getJSON, он выдает следующую ошибку в консоли JavaScript:

Не удалось загрузить ресурс jquery-3.2.1.js (9566,10)

В выходном потоке написано:

E chromium: [ERROR:sync_resource_handler.cc(63)] Отказано в перенаправлении между источниками

Я добавил следующую функцию ошибки, чтобы получить лучшее представление об ошибке:

console.log(xhr.status + status + error);

и получил это в консоли:

0errorNetworkError: не удалось выполнить «отправить» для «XMLHttpRequest»: не удалось загрузить «https://www.squirreldevelopment.it/notebet/request_utilities.php'.

У меня установлен плагин белого списка и в моем config.xml следующее:

<plugin name="cordova-plugin-whitelist" spec="~1.3.3" />
<allow-navigation href="https://squirreldevelopment.it/notebet/*" />
<allow-intent href="https://squirreldevelopment.it/notebet/*" />
<access origin="https://squirreldevelopment.it/notebet/*" />

Я также пытался использовать href="*" безуспешно.

В html-заголовке у меня есть

    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; connect-src 'self' https://www.squirreldevelopment.it/notebet/ 'unsafe-inline' 'unsafe-eval'">

В верхней части файла php у меня есть:

<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
header('Content-Type: application/json');
header('HTTP/1.1 200 OK');

Я проверил сгенерированный манифест, и есть разрешение на доступ в Интернет.

Я пытался переустановить плагин белого списка, но безуспешно.

это мой оригинальный фрагмент кода, который выполняет вызов:

        $.getJSON('https://www.squirreldevelopment.it/notebet/request_request_utilities.php', function (result) {
        console.log("success");
        $.each(result, function (i, field) {
            console.log("reading request_utilities.php");
            status = field.status;
            val_aggiorna = field.aggiorna;
            console.log("ended reading request_utilities.php");
            statusResult = result;
        });
        if (status == 0) {
            errore('Error loading data');
        } else {
            console.log("status ok");
            console.log("requestData");
            requestData(urls);
        }
    });

Это код, который я сейчас использую для отладки (они получают ту же ошибку):

        $.ajax({
        crossDomain:true,
        dataType: "json",
        url: "https://www.squirreldevelopment.it/notebet/request_utilities.php",
        success: function (result) {
                    console.log("success");
                    $.each(result, function (i, field) {
                        console.log("reading request_utilities.php");
                        status = field.status;
                        val_aggiorna = field.aggiorna;
                        console.log("ended reading request_utilities.php");
                        statusResult = result;
                    });
                    if (status == 0) {
                        errore('Error loading data');
                    } else {
                        console.log("status ok");
                        console.log("requestData");
                        requestData(urls);
                    }
        },
        error: function (xhr, status, error) {
                    console.log(xhr.status + status + error);
              }
    });

У меня больше нет идей, как это исправить. Надеюсь, кто-то может помочь.


person Lucaz97    schedule 20.11.2018    source источник
comment
Я забыл сказать, что я установил async: false   -  person Lucaz97    schedule 20.11.2018


Ответы (1)


Пожалуйста, попробуйте CSP, например:

<meta http-equiv="Content-Security-Policy" 
      content="
                default-src 'self' data: gap:; 
                connect-src 'self' https://www.squirreldevelopment.it;
                script-src 'self' data: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline';
                style-src 'self' 'unsafe-inline'; 
                media-src *; 
                ">

Я бы начал с настройки config.xml, например:

 <access allows-arbitrary-loads-for-media="true" allows-arbitrary-loads-in-web-content="true" allows-local-networking="true" origin="*"/>
 <allow-intent href="http://*/*"/>
 <allow-intent href="https://*/*"/>
 <allow-navigation href="*"/>

Если вы заставите его работать, сузьте доступ в соответствии с вашими потребностями.

person markof    schedule 20.11.2018
comment
К сожалению, это не сработало. Тот факт, что это работало до того, как я перешел на новый сервер, заставляет меня думать, что я мог что-то забыть проверить/исправить, но я гуглил все, что связано с проблемами с перекрестными запросами, и я не нашел ничего, что я не пробовал. - person Lucaz97; 22.11.2018