Ответ 1
Для заголовков CORS есть два способа указать, что разрешен междоменный XHR:
- отправка
Access-Control-Allow-Origin: *
(разрешить все хосты) - поставьте хост, который вы хотите разрешить в заголовок
Origin
по вашему серверу
Что касается URL-адресов file://
, они будут создавать null Origin
, которые не могут быть авторизованы с помощью второй опции (эхо-сигнал).
Как упоминается:
Политика междоменной политики не применяется к PhoneGap (по разным причинам, в основном из-за того, что ваше приложение, по сути, отключается от файла://URI on-device).
Помните, что вам нужно настроить белый список приложений для доступа к этим внешним доменам.
Что касается проблемы Chrome, которую можно увидеть в консоли разработчика:
Failed to load resource: net::ERR_FILE_NOT_FOUND file:///C:/2.html
XMLHttpRequest cannot load file:///C:/2.html. Received an invalid response. Origin 'null' is therefore not allowed access.
было проведено обсуждение Chromium project issue tracker, № 40787. Они отмечают проблемы, поскольку не будет исправлять, поскольку это поведение происходит по дизайну.
Существует обходное решение, предлагаемое просто отключить CORS в Chrome для целей разработки, начиная с хром с --allow-file-access-from-files --disable-web-security
например. для Windows
`C:\Users\YOUR_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files --disable-web-security`
Вот еще один ответ, связанный с кордорой:
- Приложения CORS и phonegap
- Белые списки домена в Apache Cordova - модель безопасности, которая контролирует доступ к внешним доменам.
Проверьте эти ресурсы для получения дополнительной информации о CORS:
- Совместное использование ресурсов и файл://
- Хороший учебник CORS: http://www.html5rocks.com/en/tutorials/cors/
- Работа с политикой происхождения
- Контроль доступа HTTP (CORS) (Mozilla)
Проверьте также поддержку браузера для CORS:
И для записи формальная спецификация CORS для W3C:)