2015-05-11 2 views
1

Я пытаюсь получить информацию из PHP сценария на локальном хостеКордова Ошибка запроса локального Аякса

app.js на Кордова применения:

var url = 'http://localhost:8000/locations'; 

$.ajax({ 
    url: url, 
     type: 'GET', 
     contentType: "application/json", 
     async: true, 
     dataType: 'jsonp', 
     crossDomain: true, 
     success: function(resp){ 
      console.log(resp); 
     }, 
     error: function(err) {} 
}); 

и код PHP (с Laravel framwork)

return Location::all()->toJson(); 

У меня есть эта ошибка

Отказался от загрузки сценария 'http://localhost:8000/locations?callback=jQuery21309354114597663283_1431278135791&_=1431278135792' , поскольку он нарушает следующую директиву политики безопасности содержимого: "default-src 'self' data: gap: https://ssl.gstatic.com 'небезопасно-eval'". Обратите внимание, что 'script-src' не был явно установлен, поэтому 'default-src' - , используемый в качестве резервной копии.

ответ

1

Необходимо добавить политики в приложение Кордовы.

http://content-security-policy.com/

http://www.html5rocks.com/en/tutorials/security/content-security-policy/

Второе звено именно то, что вам нужно, статья написана хорошо, я могу процитировать только:

https://apis.google.com/js/plusone.js в контексте этой страницы происхождения. Мы доверяем этому коду, но мы не можем ожидать, что в браузере будет отображаться вне его, что код с apis.google.com является ужасным, а код из apis.evil.example.com, вероятно, нет. Браузер счастливо загружает и выполняет любой код запроса страницы, независимо от источника.

Вместо того, чтобы слепо доверитель все, что обеспечивает сервер, СНТ определяет HTTP заголовка Content-Security-Policy, которая позволяет вам создать белый список источников доверенного содержимого, и инструктирует браузер только выполнить или рендеринг ресурсов из этих источников. Даже если , если злоумышленник может найти отверстие, через которое можно добавить скрипт, сценарий не будет соответствовать белым спискам и, следовательно, не будет выполнен.

1

Я добавил это в голову тег

<access origin="*" /> 

и это работает!

Смежные вопросы