Поэтому локальный хост не имеет доступа

Чтобы решить проблему CORS, я написал там

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header("Access-Control-Allow-Headers: X-Requested-With");

на моем сайте сервера

но во время моего развития я вижу эту ошибку

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed. Origin 'http://localhost' is therefore not allowed access.

Я думал, разрешить происхождение: * все решит? Но почему в заголовке указано несколько значений?

3

Решение

Это распространенная проблема при случайном включении CORS дважды. Убедитесь, что вы не включили его в apache или что заголовок не устанавливается дважды. В качестве проверки работоспособности вы можете попытаться удалить заголовок и добавить его обратно, прежде чем отправлять ответ.

Пример:

header_remove('Access-Control-Allow-Origin');
header('Access-Control-Allow-Origin: *');
3

Другие решения

Из-за ограничений безопасности браузера большинство запросов Ajax подчиняются той же политике происхождения; запрос не может успешно получить данные из другого домена, субдомена, порта или протокола. Но запросы Script и JSONP не подчиняются тем же ограничениям политики происхождения.

Если вы еще не использовали JSONP. Википедия говорит

JSONP или «JSON with padding» является дополнением к базовым данным JSON
формат, шаблон использования, который позволяет странице запрашивать и многое другое
целесообразно использовать JSON с сервера, отличного от основного.

Итак, ваш вызов ajax должен быть таким:

$.ajax({
type: 'GET',
crossOrigin: true,
dataType: "jsonp",
url: url,
success: function(data) {
console.log(data);
}
});
1

Использование * не будет работать. Приведенный ниже код PHP будет принимать все запросы от всех доменов и работает в IE, Firefox, Chrome и Safari.

$origin=isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:$_SERVER['HTTP_HOST'];
header('Access-Control-Allow-Origin: '.$origin);
header('Access-Control-Allow-Methods: POST, OPTIONS, GET, PUT');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Authorization, X-Requested-With');
header('P3P: CP="NON DSP LAW CUR ADM DEV TAI PSA PSD HIS OUR DEL IND UNI PUR COM NAV INT DEM CNT STA POL HEA PRE LOC IVD SAM IVA OTC"');
header('Access-Control-Max-Age: 1');

Прием запросов от всех доменов небезопасен. Для лучшего (но немного более сложного) решения смотрите здесь: CORS, который работает в IE, Firefox, Chrome и Safari

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector