Проблема
Налагодження програм для мобільних пристроїв, що написані за допомогою javascript фреймворків (
jQuery,
Sencha Touch), відбувається за допомогою веб браузера в режимі розробника (запуск режиму в
Google Chrome:
Ctrl+Shift+C). При цьому сама програма розміщується на локальному сервері (localhost). За змовчуванням і браузер, і localhost сервер не дозволять відправити AJAX запит на інший сервер, або навіть домен:
Origin http://* is not allowed by Access-Control-Allow-Origin
Рішення складається з двох частин:
1) Налаштування сервера localhost
2) Налаштування браузера
Налаштування сервера (на прикладі apache2)
Встановлюємо модуль headers (може бути вже встановленим)
sudo a2enmod headers
Можливо, знадобиться перезапуск сервера:
sudo /etc/init.d/apache2 reload
Підключаємо модуль headers (може бути вже підключеним)
sudo ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
Знаходимо файл налаштування доступних сторінок на сервері, у мене це /etc/apache2/sites-available/default та редагуємо його:
sudo gedit '/etc/apache2/sites-available/default'
Знаходимо в ньому розділ <Directory /.../www> з адресою папки www та додаємо в розділ дві дозволяючі строчки ("*" можна відредагувати на власний смак)
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, PUT, POST, DELETE, OPTIONS"
Перезапускаємо сервер:
sudo /etc/init.d/apache2 reload
Налаштування браузера (на прикладі Google Chrome)
Просто запустити з командної строки з параметром --disable-web-security, наприклад
/usr/bin/google-chrome --disable-web-security
Нехай щастить
P.S. Маю надію, що комусь буде корисно, бо сам витратив на це купу часу.