Есть ли способ обойти Access-Control-Allow-Origin для разработки на моем собственном сервере?
Я получаю эту ошибку JavaScript
С XMLHttpRequest не может загрузить http://foo.bar.no/API/map_tools/clean_addresses/check. Происхождение http://foo.bar.no:9294 не допускается по контроля доступа-разрешить-происхождения.
Все это находится в одном домене и на одном сервере, но мой проект JavaScript размещается автономным серверным скриптом, который автоматически связывает JavaScript и его зависимости в один файл.
Как мне пройти через это ограничение, пока я развиваюсь?
Я попытался разрешить моему скрипту JavaScript server подключиться. Это результат скручивания к url:
HTTP/1.1 200 OK Date: Wed, 11 Jan 2012 09:05:14 GMT Server: Apache/2.2.16 (Debian) Access-Control-Allow-Origin: http://foo.bar.no:9294 Vary: Accept-Encoding Content-Length: 70 Content-Type: text/plain array(1) { ["q"]=> string(31) "map_tools/clean_addresses/check" }
И все же я получаю точно такую же ошибку, как я вставил выше. Почему Chrome все еще отказывается подключаться к проклятому URL, когда это, очевидно, разрешено!?
3 ответа:
Хорошо, я понял это. Я искал простое и быстрое решение, так как мне нужны только междоменные запросы для целей разработки. Оказывается, мне просто нужно было установить оба
header("Access-Control-Allow-Origin: http://foo.bar.no:9294"); header("Access-Control-Allow-Credentials: true");
В моем PHP скрипте на Apache. Затем в моем коде JavaScript:
# Set jQuery ajax to use 'withCredentials' globally $.ajaxSetup({ xhrFields: { withCredentials: true } });
И это сделало свое дело
Используйте возможности обратного прокси вашего веб-сервера для прокси http://foo.bar.no/API/map_tools/clean_addresses/check к http://foo.bar.no:9294/API/map_tools/clean_addresses/check .
Поэтому, когда вы используете Apache, вы должны добавить что-то вроде
<Proxy *> Order allow,deny allow from all </Proxy> ProxyPass /API/map_tools/ http://foo.bar.no:9294/API/map_tools/ ProxyPassReverse /API/map_tools/ http://foo.bar.no:9294/API/map_tools/
В ваш vhost config