标题("位置:网址")不会重定向

时间:2017-03-21 12:44:42

标签: php location amp-html

我一直在尝试从AMP页面重定向到另一个页面。当一个表单被提交时,xhr-action通过POST发送数据来调用php文件。 此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。   重定向   &#39; https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com&#39;   到&#39; https://www.dominio.es/m/Alergologo/Albacete-Provincia/&#39;具有   被CORS政策阻止:&#39; Access-Control-Allow-Origin&#39;头   有价值&#39; https://www.dominio.com/amp/ *&#39;这不等于   提供的原产地。起源&#39; http://www.dominio.com&#39;因此   不允许访问。让服务器发送带有效的标头   值,或者,如果不透明的响应满足您的需求,请设置请求   模式为&#39; no-cors&#39;在禁用CORS的情况下获取资源。

     

提取失败   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:   无法获取报告的       at 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。   重定向   &#39; https://www.dominio.com/amp/include/listado.php?__amp_source_origin=http%3A%2F%2Fwww.dominio.com&#39;   到&#39; https://www.dominio2.es/m/Alergologo/Alicante-Provincia/&#39;一直都是   被CORS政策阻止:“访问控制 - 允许 - 来源”&#39;标题有一个   价值&#39; https://www.dominio.com/amp/ *&#39;这不等于   提供原产地。起源&#39; http://www.dominio.com&#39;因此不是   允许访问。让服务器发送带有效值的标头,   或者,如果不透明的响应满足您的需求,请将请求的模式设置为   &#39;无CORS&#39;在禁用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");

2 个答案:

答案 0 :(得分:1)

该解决方案已添加到帖子编辑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 :(得分:-1)

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