Кордова: не удалось выполнить «send» для «XMLHttpRequest» - PullRequest
0 голосов
/ 20 ноября 2018

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

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

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

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

E chromium: [ОШИБКА: sync_resource_handler.cc (63)] Запрещено перенаправление перекрестного источника

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

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

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

0errorNetworkError: Не удалось выполнить 'send' на '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);
              }
    });

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

1 Ответ

0 голосов
/ 21 ноября 2018

Пожалуйста, попробуйте 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="*"/>

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

...