Как с помощью AngularJS $http получить ответ без Access-Control-Allow-Origin?
Нужно с помощью AngularJS - $http() отправить GET запрос и получить ответ. Если в заголовках ответа указать 'Access-Control-Allow-Origin': '*', то ответы приходят, иначе нет. Пробовал с помощью Python: requests.get() ответы от сервера получаю без проблем, без каких-либо параметров в заголовке запроса. Пробовал в заголовках запроса отправить еще и 'Host', не помогает. Как получить ответ?
Как я понял поддержка CORS должена быть и на сервере? Но дело в том, что сервер не умеет работать с CORS, а доступа к серверу нет. Он просто возвращает xml и в заголовках: Connection, Content-Length, Content-Type, Date, Server.
Сергей Протько: Так я уже решил проблему - запустил локальный веб-сервер на python и добавил 'access-control-allow-origin' = '*' к ответу. Но дело в том, что это приложение мобильное с использованием фреймворка ionic. А держать сервер из-за получения пары параметров накладно. Может есть способ проще какой? Например вообще отключить проверку 'Origin' в AngularJS?
1) CORS это фича браузеров.
2) ionic/cordova используют системное webview и там нет CROS, а стало быть все будет просто работать. Соберите проект и запустите в эмуляторе/на девайсе.
Там для защиты от кроссдоменных запросов используются несколько другие механизмы (вы просто в config.xml прописываете куда можно делать запросы а куда нет, по умолчанию все http запросы разрешены на любой домен).
Сергей Протько: Я понимаю, что достал уже вас, но что-то не получается ничего. Специально тестировал. Есть два адреса(удаленных, не локальных): например, www.example1.ru и www.example2.ru/.www.example1.ru возвращает ответ с 'access-control-allow-origin' = '*', второй возвращает ответ без 'access-control-allow-origin'. Там где указано 'access-control-allow-origin' = '*' - ответ приходит без проблем, там где отсутствует 'access-control-allow-origin' ответ не приходит. Поднял этот свой локальный сервер на python и по логам видно, что в ответе, где отсутствует разрешение 'access-control-allow-origin' = '*', $http.get() не хочет принимать, а сервер исправно принимает запрос от приложения и отправляет назад ответ. Значит в ionic все-таки включена проверка 'access-control-allow-origin', но не обнаруживая данного параметра в заголовки, ionic этот ответ просто игнорит.
Значит в ionic все-таки включена проверка 'access-control-allow-origin', но не обнаруживая данного параметра в заголовки, ionic этот ответ просто игнорит.
Так, вы точно собирали билд, запускали его на девайсе а не в браузере?