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
И, конечно, у меня нет доступа к серверу, к которому я хочу присоединиться.
Большое спасибо за вашу помощь!
Ответы
Ответ 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.
Спасибо
Ответ 3
Если вы только что столкнулись с проблемой, начинающейся 1 августа 2019 года. Эта ошибка Access-Control-Allow-Origin.. (с использованием cordova) может быть связана с проблемой.