Подтвердить что ты не робот

CORS + Cordova: проблемы с: Access-Control-Allow-Origin

Я искал часы по этой проблеме, но я до сих пор не могу найти решение.

Я разрабатываю App cordova (базовый HTML/JS) Итак: приложение работает на мобильном устройстве из навигатора, и мне не удается выполнить запрос ajax для API: https://developer.riotgames.com/ Но позвольте сказать, что я просто хочу получить страницу google.

Как я могу это сделать, возможно ли это? Вот простой пример:

$.ajax({
    type: "GET",
    url: "https://google.com",
    dataType: "text",
    success: function(response){
        alert("!!!");
    },
    error: function(error){
        alert("...");
    }
});

Я получаю ту же ошибку снова и снова:

XMLHttpRequest не может загрузить https://google.com/. нет Заголовок заголовка Access-Control-Allow-Origin присутствует в запрошенном ресурс. Следовательно, исходное значение "null" не допускается.

Происхождение "null" связано с тем, что я запускаю код из: file:///D:/Projets/LoL/www/index.html, и я читал, что навигатор блокирует, но он не работает, если я отключу безопасность с помощью --disable-web-security И, конечно, у меня нет доступа к серверу, к которому я хочу присоединиться.

Большое спасибо за вашу помощь!

4b9b3361

Ответ 1

Вам нужен плагин "Белый список Кордовы": https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-whitelist/.

Имейте это в файле config.xml:

<access origin="*" />
<allow-navigation href="*"/>

И в метатете Content-Security-Policy в index.html. Что-то вроде:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data:">

Ответ 2

Я добавил следующее в сервер nodejs, который решает мою проблему;

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});

Это может быть полезно, если вы используете nodejs.

Спасибо