заголовок (& quot; расположение: url & quot;) не перенаправляет

Я терял много времени, пытаясь перенаправить мою страницу AMP на другие страницы. Когда форма отправляется, файл php вызывается с помощью xhr-action, отправляющего данные с помощью POST. Этот файл php устанавливает новое местоположение, чтобы перенаправить страницу на другую. Код, который я имею в файле php для перенаправления, следующий:

<?php
header("Content-type: application/json");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
$especi=$_POST["especialidad"];
$paises=$_POST["ES"];
$paismx=$_POST["MX"];
$paispr=$_POST["PR"];
$paiscl=$_POST["CL"];
$paisco=$_POST["CO"];
$paisar=$_POST["AR"];
if(isset($paises)){
$urlbase="https://www.dominio.es/p/";
$pais="ES";
$provin=$paises;
$pobla=0; //$_POST["zn2"];
}
/*
else if(isset($paismx)){
$urlbase="https://www.dominio.mx/p/";
$pais="MX";
$provin=$paismx;
$pobla=$_POST["zn2"];
}
else if(isset($paispr)){
$urlbase="https://www.dominio.com/p/";
$pais="PR";
$provin=$paispr;
$pobla=$_POST["zn2"];
}
else if(isset($paiscl)){
$urlbase="https://www.dominio.cl/p/";
$pais="CL";
$provin=$paiscl;
$pobla=$_POST["zn2"];
}
else if(isset($paisco)){
$urlbase="https://www.dominio.co/p/";
$pais="CO";
$provin=$paisco;
$pobla=$_POST["zn2"];
}
else if(isset($paisar)){
$urlbase="https://www.dominio.com.ar/p/";
$pais="AR";
$provin=$paisar;
$pobla=$_POST["zn2"];
}*/$queryespe="SELECT * FROM tx WHERE Id='$especi'";
$resultespe = mysqli_query($link,$queryespe);
$fila = mysqli_fetch_array($resultespe);
$especialidad=$fila['Keyword'];
$especialidad=reemplazargui($especialidad);
$especialidad=reemplazarac($especialidad);
if($pobla!=0){
$querypo="SELECT * FROM ts WHERE Id='$pobla'";
$resultpo = mysqli_query($link,$querypo);
$filapo = mysqli_fetch_array($resultpo);
$poblacion=reemplazargui($filapo['Keyword']);
$ulr=$urlbase.$especialidad."/".reemplazarac($poblacion)."/";
mysqli_close($link);
header ("Location: $ulr");
die();
}else{
$querypo="SELECT * FROM tx_2 WHERE Id='$provin'";
$resultpo = mysqli_query($link,$querypo);
$filapo = mysqli_fetch_array($resultpo);
$poblacion=reemplazargui($filapo['Keyword']);
$ulr=$urlbase.$especialidad."/".reemplazarac($poblacion)."/";
mysqli_close($link);
$ulr = html_entity_decode($ulr);
header ("Location: $ulr");
die();
}

?>

Процесс прибывает в entity_decode правильно, и url (ulr), который я вставил в заголовок, корректен.
Ответ, который я получаю от анализа сети Chrome, следующий (я не понимаю, почему существуют два инициатора для того же URL, который, кроме того, не работает).
Журнал ошибок:

Fetch API не может загрузить
https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com.
Перенаправить с
https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com
кhttps://www.dominio.es/m/Alergologo/Albacete-Provincia/имеет
был заблокирован политикой CORS: заголовок «Access-Control-Allow-Origin»
имеет значениеhttps://www.dominio.com/amp/* ‘это не равно
поставляемое происхождение. Происхождениеhttp://www.dominio.com‘ следовательно является
доступ запрещен Пусть сервер отправит заголовок с верным
значение или, если непрозрачный ответ удовлетворяет вашим потребностям, установите запрос
режим «no-cors» для извлечения ресурса с отключенным CORS.

Не удалось получить
https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com
: Не удалось получить

Uncaught Ошибка: отправка формы не удалась :: Не удалось получить
https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com:
Не удалось получить сообщается
в na.f.assert (log.js: 295)
на xhr-impl.js: 164

Итак, мне нужно перенаправить на другую страницу, вызывая со страницы AMP в файл php, который я показываю, который должен перенаправить на последнюю страницу. Перенаправление не работает с этим кодом.

Изменить: Проблема может быть политика CORS, но я добавил эти строки в файл htaccess и остается без работы.

<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$">
Header set Access-Control-Allow-Origin "*"</FilesMatch>
</IfModule>

Изменить 2:
Модифицированные заголовки:

ob_start();
header("Content-type: application/json");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com/amp/*");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");

Ошибки:

Fetch API не может загрузить
https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com.
Перенаправить с
https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com
кhttps://www.dominio2.es/m/Alergologo/Alicante-Provincia/‘ был
заблокирован политикой CORS: заголовок «Access-Control-Allow-Origin» имеет
значение ‘https://www.dominio.com/amp/* ‘это не равно
поставляемое происхождение. Происхождениеhttp://www.dominio.comПоэтому не
разрешенный доступ. Пусть сервер отправит заголовок с допустимым значением,
или, если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса на
‘no-cors’ для получения ресурса с отключенным CORS.

Редактировать 3: решено

Добавление заголовков для разрешения CORS решило проблему. Они должны быть добавлены во все затронутые домены.

header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com/amp/*");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");

0

Решение

Решение добавлено в пост, Редактировать 3.

Добавление заголовков для разрешения CORS решило проблему. Они должны быть добавлены во все затронутые домены.

header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: https://www.dominio.com/amp/*");
header("AMP-Access-Control-Allow-Source-Origin: https://www.dominio.com/amp/*");
header("Access-Control-Expose-Headers: AMP-Access-Control-Allow-Source-Origin");
1

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

    REPLACE,
header ("Location: $ulr");
die();
WITH,
header ("Location: $ulr");
?>
<script type="text/javascript">
location.href = '<?php echo $ulr ?>';
</script>
<?php
die();
-1

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