Есть ли способ получить доступ к разработке Access-Control-Allow-Origin на моем собственном сервере? - PullRequest
7 голосов
/ 11 января 2012

Я получаю эту ошибку JavaScript

XMLHttpRequest не может загрузить http://foo.bar.no/API/map_tools/clean_addresses/check. Источник http://foo.bar.no:9294 не разрешен Access-Control-Allow-Origin.

Это все в одном домене и на одном и том же сервере, но мой проект JavaScript размещается автономным серверным скриптом, который автоматически объединяет JavaScript и его зависимости в один файл.

Как мне обойти это ограничение во время разработки?


Я попытался разрешить подключение моего сценария JavaScript-сервера. Это результат скручивания к 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 ]

2 голосов
/ 11 января 2012

ОК, я понял это.Я искал простое и быстрое решение, так как мне нужны только междоменные запросы для целей разработки.Оказывается, мне просто нужно было установить оба значения

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
    }
});

И это помогло

1 голос
/ 15 апреля 2013

Вы можете обойти ограничения междоменной безопасности в chrome, запустив его с флагом --disable-web-security.

например. (на OS X):

open /Applications/Google\ Chrome.app/ --args --disable-web-security
1 голос
/ 11 января 2012

Используйте возможности обратного прокси вашего веб-сервера для прокси 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...